Ajax 성공 이벤트가 작동하지 않음
나는 등록 양식을 가지고 있고 다음을 사용하고 있다.$.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이 필요없을 것 같으니까 JSON을 꺼내서dataType: 'json'
배를 젓다.
문제는 이미 해결되었지만 다른 사람들에게 도움이 되길 바라며 덧붙입니다.
다음과 같은 기능을 직접 사용하려다 실수를 범했습니다(성공:OnSuccess (제품)ID) 단, 먼저 익명 함수를 전달해야 합니다.
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 형식의 데이터를 생성하기 전에 텍스트/데이터를 인쇄(에코 또는 인쇄)하지 마십시오.그러면 -successfull 200 OK가 표시되지만 javascript에서 success 이벤트는 여전히 실패합니다.POST submit1.php의 firebug의 "Network - Answer" 섹션을 체크함으로써 스크립트가 무엇을 수신하고 있는지 확인할 수 있습니다.
설치하다alert()
당신의 안에서success
콜백(callback)을 실행하여 콜백이 되고 있는지 확인합니다.
그렇지 않은 경우, 이는 단순히 서버에 접속할 수 있었지만 요청이 전혀 성공하지 못했기 때문입니다.합리적인 원인은 타임아웃이 만료되거나 php 코드의 무언가가 예외를 발생시키는 것입니다.
Firefox용 Firebug Addon을 설치하고(아직 설치하지 않은 경우) AJAX 콜백을 검사합니다.응답과 응답이 성공적(200 OK)인지 여부를 확인할 수 있습니다.다른 것도 넣을 수 있습니다.alert()
complete
콜백은 반드시 호출되어야 합니다.
유효한 JSON을 반환하고 "완전" 콜백에서 200의 응답을 받았습니다.크롬 네트워크 콘솔에서 확인할 수 있었습니다.하지만 난 특정하지 않았다.
dataType: "json"
'수용된 답변'과는 달리 실제로 문제를 해결했습니다.
은 '왜냐하면'이기 때문이다.javascript
json
그러나 php에서 echo 또는 print를 사용하면 이 상황이 발생합니다.사용한다면echo
php
, 「Simply remove 」( 삭제해 주세요)dataType : "json"
꽤 잘 작동하고 있어요.
성공 콜백과 오류 콜백을 모두 선언해야 합니다.추가 중
error: function(err) {...}
문제를 해결해야 한다
서버의 php에서 웹페이지로 결과를 되돌리기 위해 XML을 사용하고 있으며, 같은 동작을 하고 있습니다.
저의 경우, 클로징 태그가 오프닝 태그와 일치하지 않는 것이 원인입니다.
<?php
....
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>
<result>
<status>$status</status>
<OPENING_TAG>$message</CLOSING_TAG>
</result>";
?>
Ajax 기능을 사용하여 Magento에서 사용자 비밀번호를 복구하는 데 문제가 있었습니다.성공 이벤트가 실행되지 않은 상태에서 두 가지 오류가 있음을 알게 되었습니다.
- 결과가 JSON 형식으로 반환되지 않았습니다.
- 어레이를 JSON 형식으로 변환하려고 했는데 이 어레이에 utf 이외의 문자가 포함되어 있습니다.
따라서 json_eoncde()를 사용하여 반환되는 어레이를 인코딩하려고 할 때마다 인덱스 중 하나에 utf 이외의 문자가 포함되어 대부분의 경우 브라질 포르투갈어로 강조 표시되므로 기능이 작동하지 않았습니다.
컨트롤러에서 문자열을 반환하려고 했는데 컨트롤이 오류 블록으로 반환되지 않는 이유는 무엇입니까?
var sownum="aa";
$.ajax({
type : "POST",
contentType : 'application/json; charset=utf-8',
dataType : "JSON",
url : 'updateSowDetails.html?sownum=' + sownum,
success : function() {
alert("Wrong username");
},
error : function(request, status, error) {
var val = request.responseText;
alert("error"+val);
}
});
성공 응답을 반환하지 않는 컨트롤러를 조회할 때, 성공 메시지를 반환하도록 컨트롤러를 변경했을 때 동일한 문제가 해결되었습니다.Lavalite 프레임워크 사용 전:
public function Activity($id)
{
$data=getData();
return
$this->response->title('title')
->layout('layout')
->data(compact('data'))
->view('view')
->output();
}
after code looks like:
try {
$attributes = $request->all();
//do something
return $this->response->message('')
->code(204)
->status('success')
->url('url'. $data->id)
->redirect();
} catch (Exception $e) {
return $this->response->message($e->getMessage())
->code(400)
->status('error')
->url('nothing Wrong')
->redirect()
}
이것은 나에게 효과가 있었다.
나도 그런 식으로 풀었을 때 같은 문제가 있었어 내 아약스:
event.preventDefault();
$.ajax('file.php', {
method: 'POST',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify({tab}),
success: function(php_response){
if (php_response == 'item')
{
console.log('it works');
}
}
})
네. 문제는 json이 아니라 php 응답에 있습니다.이전: 제 php 응답은 다음과 같습니다.
echo 'item';
지금:
$variable = 'item';
echo json.encode($variable);
이제 내 성공이군.추신. 뭔가 잘못되었다면 죄송하지만, 이 포럼에 대한 첫 코멘트입니다.
제 경우 서버 측에서 오류가 발생하여 html을 반환하고 있었습니다.
wp_nonce_field(basename(__FILE__), "mu-meta-box-nonce");
다음과 같이 '오류' 콜백을 추가합니다('성공'과 같음).
$.ajax({
type: 'POST',
url: 'submit1.php',
data: $("#regist").serialize(),
dataType: 'json',
success: function() {
$("#loading").append("<h2>you are here</h2>");
},
error: function(jqXhr, textStatus, errorMessage){
console.log("Error: ", errorMessage);
}
});
내 경우 콘솔에 다음과 같이 표시됩니다.
Error: SyntaxError: Unexpected end of JSON input
at parse (<anonymous>), ..., etc.
성공 콜백은 다음 두 가지 인수를 사용합니다.
success: function (data, textStatus) { }
'아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아,submit1.php
헤더를 합니다.「 」 。application/json
언급URL : https://stackoverflow.com/questions/1969476/ajax-success-event-not-working
'programing' 카테고리의 다른 글
Moment.js를 최신 개체로 변환 (0) | 2022.09.27 |
---|---|
mysql 워크벤치를 통해 mysql 데이터베이스로 데이터를 Import하려면 어떻게 해야 합니까? (0) | 2022.09.27 |
페이지가 완전히 로드되었을 때 기능을 실행하는 방법은 무엇입니까? (0) | 2022.09.26 |
조건부로 Select Input 값 변경 방지 (0) | 2022.09.26 |
Java 키스토어의 PEM 포맷으로의 변환 (0) | 2022.09.26 |