2012-04-12 21 views
2

jqueryを使用してクロスドメインリクエストを作成しようとしました。jsonpのクロスドメインリクエストレスポンスで解析中にnullが返される

<?php 
header('Access-Control-Allow-Origin: *'); 
header('Expires: ' . gmdate('r', 0)); 
header('Content-type: application/json'); 
session_cache_limiter('nocache'); 

$arr = array ('response'=>'success','comment'=>'test comment here','type'=>$_GET['type']); 
echo json_encode($arr); 
?> 

をしかし、私は、要求/応答プロセスを完了したときに私は何も持っていない:これは、クライアント側の意志が、のように見える

<script src="js/jquery-1.6.2.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $.ajax({ 
     type: 'GET', 
     url: "http://www.xserver.com/xdomainhandler.php", 
     processData: true, 
     data: { 
      type:"gotohell" 
     }, 
     dataType: "json", 
     success: function (data) { 
      myglob=data; 
      var repo=JSON.parse(myglob); 
      alert(repo.type); 
     }, 
     error : function(XMLHttpRequest, textStatus, errorThrown){ 
      alert('ends up in error state'); 

     } 
    }); 
}); 
</script> 

と、この要求を受けたサーバーのページのコードは次のようになります方法です'repo'変数。私は放火犯を使用して応答をチェックし、それはのような応答を示し、

{"response":"success","comment":"test comment here","type":"gotohell"}

また、私は、それが示して放火犯のDOMパネルにmyglob変数を確認

Object { response="success", comment="test comment here", type="gotohell"} 

が、私はにmyglobを解析されたときレポ、それは何も表示されません..どこが間違っている。誰かが私を助けることができます。ありがとう!

答えて

3

あなたはjQueryのヨーヨーのためにそれを解析するように

 var repo=JSON.parse(myglob); 

を避けるため、それを解析する必要があり、あなたはjQueryのは、すでに応答を解析されていますdataType: 'json'を供給しているのでちょうど

alert(data.type); 
+0

ありがとうございます。私はそれを持っているので、jsonとしてデータ型を設定すると、自動的に解析されます。 – VKGS

+2

@Sekarはい、データ型を設定しない場合、jQueryはヘッダーから推測しようとしますが、jsonが推測すると解析するので、応答を解析しないでください。 –

+0

きちんとした答え。 – VKGS

2

を呼び出すことはありません - パース再度エラーが発生します。次の行を削除します。

var repo = JSON.parse(myglob); 
関連する問題