등록 양식이 있고 $.ajax
제출하는 데 사용 하고 있습니다.
이것은 내 AJAX 요청입니다.
$(document).ready(function() {
$("form#regist").submit(function() {
var str = $("#regist").serialize();
$.ajax({
type: 'POST',
url: 'submit1.php',
data: $("#regist").serialize(),
dataType: 'json',
success: function() {
$("#loading").append("<h2>you are here</h2>");
}
});
return false;
});
});
내에서 submit1.php의 파일 나는 필드의 존재를 확인 이메일 주소 와 사용자 이름 데이터베이스입니다. 해당 값이 페이지 새로 고침없이 존재하면 오류 메시지를 표시하고 싶습니다 .
AJAX 요청 의 성공 콜백에 이것을 어떻게 추가 할 수 있습니까?
답변
결과는 아마도 JSON 형식이 아니므로 jQuery가 구문 분석하려고하면 실패합니다. error:
콜백 함수로 오류를 잡을 수 있습니다 .
어쨌든 해당 기능에 JSON이 필요하지 않으므로 dataType: 'json'
행 을 가져올 수도 있습니다 .
답변
문제가 이미 해결되었지만 다른 사람들에게 도움이되기를 바랍니다.
나는 실수를 이런 식으로 직접 사용하려고 시도했다 (성공 : OnSuccess (productID)). 그러나 먼저 익명 함수를 전달해야합니다.
function callWebService(cartObject) {
$.ajax({
type: "POST",
url: "http://localhost/AspNetWebService.asmx/YourMethodName",
data: cartObject,
contentType: "application/x-www-form-urlencoded",
dataType: "html",
success: function () {
OnSuccess(cartObject.productID)
},
error: function () {
OnError(cartObject.productID)
},
complete: function () {
// Handle the complete event
alert("ajax completed " + cartObject.productID);
}
}); // end Ajax
return false;
}
랩퍼로 익명 함수를 사용하지 않으면 웹 서비스가 예외를 리턴하더라도 OnSuccess가 호출됩니다.
답변
dataType 행을 제거하려고 시도했지만 작동하지 않았습니다. 콜백으로 “성공”대신 “완료”를 사용하여 문제를 해결했습니다. 성공 콜백은 여전히 IE에서 실패하지만 스크립트가 실행되고 완료되기 때문에 어쨌든 그게 전부입니다.
$.ajax({
type: 'POST',
url: 'somescript.php',
data: someData,
complete: function(jqXHR) {
if(jqXHR.readyState === 4) {
... run some code ...
}
}
});
jQuery 1.5에서는 이와 같이 할 수도 있습니다.
var ajax = $.ajax({
type: 'POST',
url: 'somescript.php',
data: 'someData'
});
ajax.complete(function(jqXHR){
if(jqXHR.readyState === 4) {
... run some code ...
}
});
답변
PHP 파일에서 JSON 형식의 데이터를 생성하기 전에 텍스트 / 데이터를 인쇄 (에코 또는 인쇄)하지 않아야합니다. 그것은 당신이-성공적인 200 OK를 얻었음을 설명 할 수 있지만 당신의 성공 이벤트는 여전히 자바 스크립트에서 실패합니다. POST submit1.php에 대한 firebug의 “Network-Answer”섹션을 확인하여 스크립트가 수신 한 내용을 확인할 수 있습니다.
답변
을 넣어 alert()
당신에 success
있는지가 전혀 호출되는 것 있도록 콜백.
그렇지 않은 경우 서버에 액세스 할 수 있지만 요청이 전혀 성공하지 못했기 때문입니다. 합리적인 원인은 시간 초과가 만료되거나 PHP 코드의 어떤 예외가 발생하기 때문일 수 있습니다.
파이어 폭스 용 파이어 버그 애드온을 아직 설치하지 않았다면 설치하고 AJAX 콜백을 검사하십시오. 응답 및 성공적인 (200 OK) 응답 수신 여부를 볼 수 있습니다. 콜백 에 다른 것을 넣을 수도 있습니다 alert()
. complete
콜백은 반드시 호출해야합니다.
답변
나는 같은 문제가 있었다. 데이터를 반환 javascript
할 때 json
데이터 형식 이 필요하기 때문에 발생 합니다. 그러나 PHP에서 echo 또는 print를 사용하면이 상황이 발생합니다. echo
함수 를 사용 php
하여 데이터를 반환하는 경우 dataType : "json"
작업을 잘 제거하십시오 .
답변
유효한 JSON을 반환하고 “완전한”콜백에서 200의 응답을 얻었고 크롬 네트워크 콘솔에서 볼 수 있었지만 지정하지 않았습니다.
dataType: "json"
일단 “허용 된 답변”과 달리 실제로 문제를 해결했습니다.