2013-03-19 2 views
0

난 다음 문자열 여전히편집 됨 OK JSON 응답 (200)을 볼 수는 있지만

([{"data":{"Rate":"","RoleA":"Student","NameA":"student","RoleB":"Tutor","NameB":"tutorB","Give":"0","Get":"1","Accept":"0"}}]); 
내가 http://api.jquery.com/jQuery.ajax/에서 읽고

하지만 내가 잘못하지 않은 경우 확실하지를 얻을 수 있습니다 parsererror 반환 할 수 있습니다.

내가는 JSON 문자열을 찾을 수 있으며 정상 보이는, 내 코드 크롬에서

  $.ajax({ 
         type:   'GET', 
         dataType:  'jsonp', 
         jsonpCallback: 'jsoncallback', 
         data: 
         { 

           nameB: nameB, 
           roleB: roleB, 
           get123: get123, 
           accept: accept 
         }, 
         url: 'http://mydomain.com/check.php?callback=?', 
         success: function(data){ 
          alert(data[0].data.RoleA); 
          //alert("ABC"); 
          //if ($("#role").text() == "Tutor") 
          //{ 
          // window.location.href='tutor_home.html'; 
          //} 
          //else 
          //{ 
          // window.location.href='student_home.html'; 
          //}   
         }, 
         error: function(jqXHR, textStatus){ 
          alert("Request failed: " + textStatus); 
         } 
      }); 

입니다. 그러나, 그것은 성공 메시지를 경고하지 않고 대신 parsererror 오류를 경고합니다. 감사합니다

내가 확실하지 않다

<?php 

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 
header("Content-type: application/json"); 

include('mysqlConfig.php'); 


$nameB = $_GET["nameB"]; 
$roleB = $_GET["roleB"]; 
$get = $_GET["get123"]; 
$accept = $_GET["accept"]; 

$sql="SELECT * FROM tbl_rating WHERE NameB='$nameB' and RoleB='$roleB' and Get='$get' and Accept='$accept'"; 
$result=mysql_query($sql); 


$rows = array(); 

//retrieve and print every record 
while($r = mysql_fetch_assoc($result)){ 
    // $rows[] = $r; has the same effect, without the superfluous data attribute 
    $rows[] = array('data' => $r); 
} 

// now all the rows have been fetched, it can be encoded 
//echo json_encode($rows); 

$data = json_encode($rows); 
echo $_GET['jsoncallback'] . '(' . $data . ');'; 
?> 

내 PHP는 왜 요청 URL 다음과 같이 URL은 다음과 같습니다 http://mydomain.com/check.php?callback=jsoncallback&nameB=tutorB&roleB=Tutor&get123=1&accept=0&_=1363710513593

나는 그것이 무엇 확실하지 오전 마지막 매개 변수 &_=1363710513593를?

하지만 위의 문자열은 JQuery와 버전에 관련된 않습니다

을 반환 할 수 있습니다? jquery-1.9.1.min.js를 사용했습니다.

+0

시도한 내용은 무엇입니까? 어떤 오류가 발생 했습니까? (우리가 당신을 위해 숙제를 할 것을 기대하지 마십시오 ...) – Martijn

+0

GET에서 POST로 유형을 변경하려고 시도하고 다른 URL을 변경하려고 시도했으며 모두 모두 "오류가 발생했습니다." – HUNG

+1

이 링크의 응답을 표시 할 수 있습니까? http : //mydomain.com/check.php? nameB = tutorB & roleB = 교사 & get123 = 1 & accept = 0 & jsoncallback = mycallback' – vittore

답변

3

아약스 설정 개체 (지금은 "?"라고 함)에 콜백 이름을 지정해야합니다. 이 작업 방법에 대한 자세한 내용은 http://api.jquery.com/jQuery.ajax/을 참조하십시오. 설정 개체에서 "jsonp"를 찾습니다. PHP 코드에서 해당 콜백 이름을 가져 와서 응답으로 반환해야 함수가 클라이언트에 수신 될 때 해당 함수가 실행됩니다. 예 : jsoncallback (YOURJSONDATA).

http://api.jquery.com/jQuery.ajax/

JSONP 유형에서 붙여 넣은 : 문자열은 JSONP 요청에 콜백 함수 이름을 무시 . 이 값은 '콜백 ='에서 '콜백'대신 사용됩니다. url에있는 쿼리 문자열의 일부. 그래서 {jsonp : 'onJSONPLoad'}는 'onJSONPLoad =?' 서버로 전달됩니다. jQuery 1.5에서 jsonp 옵션을 false로 설정하면 jQuery는 "? 콜백"문자열을 URL에 추가하거나 "=?" 변환을 위해. 이 경우 jsonpCallback 설정도 명시 적으로 설정해야합니다. 예 : {jsonp : false, jsonpCallback : "callbackName"}

+0

위에서 수정 한 후에도 코드에서 문제가 없지만 여전히 성공을 반환하지 못합니다. – HUNG

+0

자세한 정보가 필요합니다 .jsonp 및 jsonpcallback을 지정 했습니까? 질문 기호로 시작 하시겠습니까? 지정한 jsonpcallbackname이 URL에 포함되어 있습니까? 백엔드에서 오류가 발생했을 수 있습니까? –

+0

위의 게시물에서 업데이트했습니다. 자세한 정보가 필요하면 알려주십시오. = ( – HUNG

1

업데이트 : 서비스가 올바른 jsonp 페이로드를 반환하지 않는다고 나타냅니다. 전달 된 콜백 이름을 사용하도록 수정하여 전달할 때 다음과 같은 응답이 표시됩니다. jsonp 콜백으로 mycallback에 있습니다.

mycallback([{"data":{"Rate":"","RoleA":"Student","NameA":"student","RoleB":"Tutor","NameB"‌​:"tutorB","Give":"0","Get":"1","Accept":"0"}}]); 

2 업데이트 : &_=1363710513593을 - 타임 스탬프 때문에 JSONP는 (클라이언트에서 처리하는 방법 방식, 주문 요청을 JSONP 해당 있었는지 알아낼 JQuery와 수 있도록에서 요청하는 추가 즉, 응답은 텍스트로 제공하고있다) 본문에 임베디드

당신이

http://api.jquery.com/jQuery.ajax/

01 jsoncallback하는 JSON 콜백 이름을 JSONP 요청을하고 변경하려면 $.ajax를 구성 할 필요가 있도록 액세스

JSON 서비스는 JSONP에 대한 지원을하고있다

$.ajax({ 
       type: 'GET', 
       dataType : 'jsonp', 
       jsonpCallback : 'jsoncallback', 
       data: 
       { 

         nameB: nameB, 
         roleB: roleB, 
         get123: get123, 
         accept: accept 
       }, 
       url: 'http://mydomain.com/check.php', 
       success: function(data){ 
        alert(data[0].data.RoleA); 
       }  
       }, 
       error: function(){ 
        alert('There was an error.'); 
       } 
      }); 

      //return false; 
     }); 
+0

여전히 좋아 보이지 않는 것 같습니다. 여전히 오류가 표시됩니다. – HUNG

1

서버가 reutnr jsonp를 (를) 찾으려고합니다. ajax 요청에

을 추가하고 jsoncallback =?을 삭제하십시오. 매개 변수

$.ajax({ 
       type: 'GET', 
       dataType: 'jsonp', 
       data: 
       { 

         //nameB: nameB, 
         //roleB: roleB, 
         //get123: get123, 
         //accept: accept 
       }, 
       url: 'http://mydomain.com/check.php?nameB=tutorB&roleB=Tutor&get123=1&accept=0&', 
       success: function(data){ 
        alert(data[0].data.RoleA);  
       }, 
       error: function(){ 
        alert('There was an error.'); 
       } 
      }); 

      //return false; 
     }); 
+0

요청에 사용자 정의 jsonCallback 이름을 설정해야합니다. – vittore

+0

위의 코드로 변경 한 후에도 여전히 경고 오류가 발생했습니다. = ( – HUNG

관련 문제