2011-03-28 10 views
2

PHP 스크립트에 두 개의 변수를 게시하는 jQuery가 있습니다. PHP는 매우 간단하며 주어진 내용을 기반으로 문자열을 반환합니다 (예 : '업데이트 성공'). 페이지에서 어떤 방식 으로든 사용하고 싶습니다.jQuery ajax responseText 'undefined'

내가 처음 클릭 할 때 '정의되지 않음'이라는 경고 메시지가 표시되면 더 많은 클릭이 발생하고 모든 것이 정상적으로 작동합니다. 꽤 멀지는 않았지만이 문제를 해결할 수는 없습니다.

방화 광을 사용했으며 데이터가 게시되고 모든 시도에서 올바른 응답이 수신되었습니다.

$(document).ready(function(){ 

    $('#updatehol').click(function() { 
    additions = $('#additions').attr('value'); 
    deductions = $('#deductions').attr('value'); 
    datastring = 'additions='+ additions +'&deductions='+ deductions; 

    $.ajax({ 
       type: "POST", 
       data: datastring, 
       url: "doadjust.php", 
       complete: function(data) { 
       alert(data.responseText); 
       } 
       }); 
    }); 
}); 

답변

1

alert(data)으로 무엇을 얻습니까?

BTW 그것은 성공이 완료되지이다 :

 $.ajax({ 
       type: "POST", 
       data: datastring, 
       url: "doadjust.php", 
       success: function(data) { 
        alert(data); 
       } 
       }); 
    }); 
+0

답장을 보내 주셔서 감사합니다. 위에서 경고 (데이터)를 사용하여 게시 한 원본 코드에는 경고에 [object Object]가 포함되어 있습니다. 성공을 사용하면 불량한 '정의되지 않은'경고가 제거되지만 첫 번째 클릭에는 경고가 표시되지 않지만 두 번째에는 경고가 표시되지 않습니다. 다시 방화범에 따르면 나는 성공적인 게시물을 만들고 두 번의 클릭에 대한 응답을받는 중이다. – daviiies

+0

오류 콜백을 구현하여 오류가 있는지 확인하십시오. – alexl

+0

'$ ('body') .html (data);'data'가 객체 인 경우 ... –

2

그것을 정렬. Ajax 함수에서 async: false 옵션이 필요합니다.

$.ajax({ 
    type:  "POST", 
    data:  datastring, 
    url:  "doadjust.php", 
    dataType: "html", 
    async: false, 
    success: function(data) { 
     alert(data); 
    } 
}); 
+0

수정 한 경우 다른 것이 틀림 없습니다. * A * JAX – Alnitak

+1

아 - 여러분은 'data.responseText'를 단지 'data'로 변경했습니다. 아마도 그걸 수정 한 것일 겁니다. 'data'는 아마 AJAX 호출을 동기식으로 만들 필요가 거의 없습니다. 매개 변수'성공'에 해당 필드가 없습니다. 다시 비동기로 해보십시오. – Alnitak

+0

흠 네, 동기가 이상하게 들리는 것 같아요. 경고 (데이터)와 비동기를 사용하여 이동했습니다. 두 번째 클릭까지 겉으로보기에는 성공적인 게시물과 응답은 있지만 경고는 표시되지 않습니다. – daviiies

1

이것은 저에게 효과적입니다.

var min = $.ajax(
     { 
      type: 'POST', 
      url: 'LineChart.asmx/LineChrt', 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      async: false, 
      success: function(data) { 
       // alert("SUCESS"); 
      }, 
      error: function(xhr, status) { 
       alert("hatada:" + xhr.responseXML); 
      }, 
      onComplete: function(data) { 

      } 
0

당신이 오래된 질문이지만, 난 그냥 같은 문제로 실행하고 jQuery를 워드 프로세서에서 답을 발견 json 유형, 예를 :

$('#test').on('click', '.testclass', function(event){ 
    $.post($(this).attr('href'), 
    function(data) { 
     alert(data.text); 
    }, 'json'); 
}); 
0

추가해야합니다.

responeText 및 responseXml은 dataType : text 또는 xml을 사용할 때만 폴링됩니다. 다른 데이터 유형을 사용하는 경우 성공 콜백의 첫 번째 매개 변수로 전달됩니다. JQuery와 문서 도구에서

:

데이터 유형 $ 아약스() 함수는 검색된 데이터에 대한 정보 를 제공하기 위해 서버에 의존

. 서버가 반환 데이터를 XML로보고하면 결과는 일반 XML 메서드 또는 jQuery의 선택기를 사용하여 탐색 할 수 있습니다. 위의 예의 에있는 HTML과 같은 다른 유형이 감지되면 데이터는 텍스트로 처리됩니다.

dataType 옵션을 사용하여 다른 데이터 처리를 수행 할 수 있습니다. 일반 xml 외에도 dataType은 html, json, jsonp, script 또는 텍스트 일 ​​수 있습니다.

텍스트 및 xml 유형은 아무런 처리없이 데이터를 반환합니다. 데이터는 이고 응답 핸들은 단순히 responseText 또는 jqXHR 객체의 responseXML 속성 을 통해 전달됩니다.