2014-04-01 96 views
1

我有一個GAE應用程序,它接受JSON請求並在響應中用JSON回覆。我知道它是有效的,因爲我有一個適用於它的Android應用程序。我正在嘗試建立一個基於JavaScript瀏覽器的界面。爲此,我試圖通過JQuery從不同的GAE域上託管的頁面發送請求。但是,據我所知,阿賈克斯根本沒有發送。對GAE不起作用的Ajax請求?

<!DOCTYPE html> 
<html> 
<head> 
<script> 
    function loadXMLDoc() { 

     alert("before ajax....."); 

      $.ajax({ 
        type: "POST", 
        url: "CORRECT URL HERE", 
        data: { 
         type:"GAMES_LIST" 
        }, 
        jsonpCallback: function(){ 
         alert("success"); 
        }, 
        async: false, 
        crossDomain : true, 
        dataType: 'jsonp' 
       }); 


      alert("after ajax..."); 

    } 


</script> 
</head> 
<body onLoad="loadXMLDoc()"> 

    <div id="myDiv"></div> 

</body> 
</html> 

只有第一個'ajax'警報被觸發。

有沒有人知道我做錯了什麼?

+1

你有沒有檢查過你的瀏覽器調試工具(特別是網絡部分)?它可以提供一些提示。 – user3355018

+0

我認爲Peter Hudec是對的。顯然,沒有辦法使用POST請求使用jsonp,只有GET。有誰知道如何配置GAE與CORS繞過同源策略? – yedidyak

+0

@yedidyak,是的,jsonp將無法使用POST請求。這是爲什麼:http://stackoverflow.com/questions/2699277/post-data-to-jsonp –

回答

1

通過向其他域發出AJAX請求,您違反了Same-origin policy

如果您有權訪問JSON端點,則可以允許特定域在Access-Control-Allow-Origin HTTP標頭中訪問您的端點。

如果您無權訪問端點,例如它是第三方提供商,如果提供商支持,您可以提出JSONP請求。

+0

我在響應的GAE應用程序的響應中添加了標題。最後工作。 – yedidyak