programing

Ajax 성공 이벤트가 작동하지 않음

newsource 2022. 9. 26. 23:04

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"

'수용된 답변'과는 달리 실제로 문제를 해결했습니다.

은 '왜냐하면'이기 때문이다.javascriptjson그러나 php에서 echo 또는 print를 사용하면 이 상황이 발생합니다.사용한다면echophp , 「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에서 사용자 비밀번호를 복구하는 데 문제가 있었습니다.성공 이벤트가 실행되지 않은 상태에서 두 가지 오류가 있음을 알게 되었습니다.

  1. 결과가 JSON 형식으로 반환되지 않았습니다.
  2. 어레이를 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