JQuery: '잡히지 않은 유형 오류:ajax 요청 시 잘못된 호출' - 여러 요소
A와 B의 두 가지 선택 요소가 있습니다. A의 선택 옵션이 변경되면 그에 따라 B의 옵션을 업데이트해야 합니다.A의 각 요소는 B의 여러 요소를 의미하며, 일대다 관계입니다(A는 국가를 포함하고 B는 특정 국가에 위치한 도시를 포함해야 합니다).
함수do_ajax
는 비동기 요구를 실행해야 합니다.
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
B의 옵션을 업데이트하기 위해 A의 Function Call에 Function Call을 추가했습니다.onChange
event. onChange 이벤트가 발생했을 때 실행되는 함수는 다음과 같습니다.A
)가 트리거 됩니다.
function my_onchange(e) // "e" is element "A"
{
var sel_B = ... ; // get select element "B"
// I skipped some code here
// ...
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
do_ajax(city_sel, data, 'ajax_handler.php');
}
}
JQuery 문서에서 읽은 바로는data
는 배열(키 값 쌍)일 수 있습니다.다음과 같이 입력하면 오류가 발생합니다.
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
대신 데이터가 문자열인 경우에는 다음 오류가 발생하지 않습니다.
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
그러나 나는 내 서버측 php 코드에 있는 변수의 "array version"이 필요합니다.
그Uncaught TypeError: Illegal invocation
모두 압축된 "jquery-1.7.2.min.js" 파일에 있기 때문에 에러가 발생한 코드를 알 수 없었습니다.
데이터를 연관 배열로 받아들이도록 코드를 변경할 수 있는 설정이 있습니까?
사프라즈와의 대화 덕분에 해결책을 찾을 수 있었다.
문제는 그 값 대신 HTML 요소를 전달하고 있었다는 것입니다.그것은 실제로 제가 하고 싶었던 것입니다(실제로 제 php 코드에서 저는 그 값을 쿼리하기 위한 외부 키로서 필요로 합니다).cities
테이블과 필터의 올바른 엔트리를 참조해 주세요.
즉, 다음과 같은 것이 아니라
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
다음 중 하나여야 합니다.
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex].value
};
주의: Jason Kulatunga의 답변을 확인하십시오.JQuery 문서를 인용하여 HTML 요소를 전달하면 문제가 발생하는 이유를 설명합니다.
Ajax 콜을 올바르게 설정하지 않았기 때문에 FormData 객체를 게시할 때 이 오류가 발생했습니다.아래의 셋업으로 문제가 해결되었습니다.
var myformData = new FormData();
myformData.append('leadid', $("#leadid").val());
myformData.append('date', $(this).val());
myformData.append('time', $(e.target).prev().val());
$.ajax({
method: 'post',
processData: false,
contentType: false,
cache: false,
data: myformData,
enctype: 'multipart/form-data',
url: 'include/ajax.php',
success: function (response) {
$("#subform").html(response).delay(4000).hide(1);
}
});
jQuery 문서:processData
:
프로세스 데이터 부울
디폴트: true
기본적으로는 데이터 옵션에 개체로 전달된 데이터(기술적으로는 문자열 이외)는 처리되어 쿼리 문자열로 변환되며 기본 컨텐츠 유형인 "application/x-www-form-urlencoded"에 적합합니다.DOMDocument 또는 기타 처리되지 않은 데이터를 보내려면 이 옵션을 false로 설정하십시오.
출처 : http://api.jquery.com/jquery.ajax
이 제품을 사용해야 할 것 같습니다.processData
서버에 데이터를 보내거나 querystring 부호화 파라미터를 지원하도록 php 스크립트를 변경합니다.
JQuery 문서에서 데이터가 배열(키 값 쌍)일 수 있다고 읽은 적이 있습니다.다음과 같이 입력하면 오류가 발생합니다.
이것은 배열이 아닌 객체입니다.
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
다음과 같은 경우가 있습니다.
var data = [{
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
}];
에도 같은 이 문제를 했습니다.traditional: true,
이 문제를 해결하려면 다음 절차를 따르십시오.
$.ajax({
url: 'https://your-api-endpoint',
type: 'post',
data: new formData(this),
processData: false,
contentType: false,
success: function(response) {
console.log(response)
}
})
processData: false 및 content를 사용해야 합니다.입력: false, 이 두 줄.당신의 문제는 해결될 거예요.
저는 같은 문제를 받고 있었고, 다음과 같이 수정할 수 있었습니다.
var formData = new FormData(document.getElementById('form_id'));
$.ajax({
type: 'POST',
url: '/Settings/de_acc',
data: formData,
cache: false,
contentType: false,
processData: false,
success: function(res){
console.log(res);
}
})
★★★illegal invocation
$.getJSON
에 undefined
의 값중data
fixing. 오류를 한 수정오류를 해결했습니다.
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
**contentType: false,
processData: false**
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
아약스 JSON의 JSON입니다.「」를 사용합니다.JSON.stringify()
문제를 해결할 수 있습니다.다음과 같이 합니다.
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: JSON.stringify(mydata), //Here's the change
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
$.ajax({
url:"",
type: "POST",
data: new FormData($('#uploadDatabaseForm')[0]),
contentType:false,
cache: false,
processData:false,
success:function (msg) {}
});
시험:
$.ajax({
url:"",
type: "POST",
data: new FormData($('#uploadDatabaseForm')[0]),
contentType:false,
cache: false,
processData:false,
success:function (msg) {}
});
언급URL : https://stackoverflow.com/questions/11071100/jquery-uncaught-typeerror-illegal-invocation-at-ajax-request-several-eleme
'it-source' 카테고리의 다른 글
SQL Plus에서 실행되는 SQL 스크립트에서 앰퍼샌드를 무시하려면 어떻게 해야 합니까? (0) | 2023.02.25 |
---|---|
Json의 PreserveReferencesHandling과 ReferenceLoopHandling의 차이점은 무엇입니까?인터넷? (0) | 2023.02.25 |
React useState with functional update 폼이 필요한 이유는 무엇입니까? (0) | 2023.02.25 |
Django Rest-Framework 중첩된 시리얼라이저 순서 (0) | 2023.02.25 |
WordPress에 게시물이 10개 이상 표시되지 않음 (0) | 2023.02.25 |