簡體   English   中英

通過javascript獲取JSON [跨域]

[英]Get JSON via javascript [Cross-Domain]

請在以下情況下幫助我:

頁面p1.aspx只有一個按鈕:

<button id="btn1" onclick="btnclick();">Button</button>    
<script type="text/javascript">
  $('#btn1').click(function () {
    $.getJSON("http://localhost/p2.aspx", function (data) {
      $.each(data, function (i, field) {            
        alert(field);
      });
    });
  });
</script>

上面是我想通過javascript獲取JSON文本的方式。

Web應用程序http://localhost/p2.aspx重定向到內部的http://localhost/p3.aspx 然后頁面http://localhost/p3.aspx再次重定向回http://localhost/p2.aspx?code=1

code=1

是我想在我的JavaScript代碼中讀取的值。 但這是行不通的。

在p2.aspx中,我生成如下的JSON數據

Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(jsonString);
Response.End();

之后,我無法通過javascript讀取json數據。 但是,如果我只是通過網絡瀏覽器放置http://localhost/p2.aspx ,則它會在頁面上獲取json數據。

如果您想使用JSONP則需要使用它。

因此,您的腳本應考慮callback參數:

Response.Clear();
string callback = Request["callback"];
if (!string.IsNullOrEmpty(callback))
{
    Response.ContentType = "application/javascript; charset=utf-8";
    Response.Write(string.Format("{0}({1})", callback, jsonString));
}
else
{
    Response.ContentType = "application/json; charset=utf-8";
    Response.Write(jsonString);
}
Response.End();

然后在客戶端上:

$.getJSON("http://localhost/p2.aspx?callback=?", function (data) {
    ...
});

注意callback查詢字符串參數如何設置為? 基本上,jQuery會將其轉換為如下所示的請求:

http://localhost/p2.aspx?callback=jQuery123456789....

並且您的服務器端腳本當然應該返回JSONP ,這是包裝在回調名稱中的JSON字符串:

jQuery123456789....({"code":1})

還要確保代碼中使用的jsonString變量是實際的JSON字符串(顧名思義)。 因為您在問題( code=1 )中顯示的內容與JSON相距甚遠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM