1

以下のようなJavaScriptメソッドスニペットがあります

var  tempUrl = "http://A.com:8081/TestService/serviceMethod";  
jQuery.ajax({  
url:tempUrl,  
type: 'POST',  
data:"getDatareq="+encodedata,  
contentType: 'application/json',  
dataType:'text',  
success:function(result){  
jQuery(".loadingMsg").html("");  
jQuery(".loadingMsg").hide();  
getApptDtls(result);  
},  
complete:function(result){  
jQuery(".loadingMsg").html("");  
jQuery(".loadingMsg").hide();  
jQuery(".popupContent").show();  
jQuery.unblockUI(); 

URL http://B.com:8081の別のサーバーでホストされている html にこのメソッドを含めています。

この html を実行してこのメ​​ソッドを呼び出すと、A.com の serviceMethod がヒットしません。ここで何が問題になる可能性がありますか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

JSONPを使用します。

JSONP または「パディング付き JSON」は、JavaScript で使用される通信技術です。これは、異なるドメインのサーバーからデータを要求する方法を提供します。これは、同じオリジン ポリシーのために一般的な Web ブラウザーでは禁止されています。

jQuery:

var  tempUrl = "http://A.com:8081/TestService/serviceMethod";  
    $.ajax({
         url:tempUrl,
         dataType: 'jsonp', // Notice! JSONP <-- P (lowercase)
         success:function(json){
             // do stuff with json (in this case an array)
             alert("Success");
         },
         error:function(){
             alert("Error");
         },
    });

PHP:

<?php
$arr = array("element1","element2",array("element31","element32"));
$arr['name'] = "response";
echo $_GET['callback']."(".json_encode($arr).");";  // 09/01/12 corrected the statement
?>
于 2013-04-11T06:13:56.547 に答える