[英]JSON not loading with jQuery.ajax()
我正在使用返回JSON數據的Web服務。
test.com/incident.do?JSON&sysparm_action=getRecords
在瀏覽器中加載此URL會提示我打開identity.do,該事件在記事本中打開會顯示有效的JSON數據。
然后,在同一個域的網頁中,我使用以下代碼:
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', authinfo);
},
url: "https://test.com/incident.do?JSON&sysparm_action=getRecords",
dataType: 'json',
type: 'GET',
success: function(a,b,c) {
alert(a);
}
});
但是,使用此代碼,我沒有收到任何JSON,僅收到此響應
HTTP/1.1 200 OK
Date: Tue, 13 Jul 2010 22:28:09 GMT
Server: Apache-Coyote/1.1
Allow: GET, HEAD, POST, TRACE, OPTIONS
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/plain
我在這里做錯了什么?
編輯:如果它可以幫助任何人,我有一個鏈接到提供相同功能的提供商網站上的沙箱...用戶名/密碼為admin / admin
https://demo.service-now.com/incident.do?JSON&sysparm_action=getRecords
嘗試設置contentType
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', authinfo);
},
url: "https://test.com/incident.do?JSON&sysparm_action=getRecords",
contentType: "application/json",
dataType: 'json',
type: 'GET',
success: function(a,b,c) {
alert(a);
}
});
更新
這是正確的呼叫方式。 但是,如果您要請求的是您網域之外的頁面,則該頁面將無法正常運行。 為此,您需要一個代理。 這是一個簡單的PHP代理:
<?php
/* Set the headers for application/json , xml, or whatever */
echo @file_get_contents(urldecode($_GET['url']));
?>
然后,您的請求將必須轉到此頁面,如下所示:
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', authinfo);
},
url: "myproxy.php?url=" + escape("https://test.com/incident.do?JSON&sysparm_action=getRecords"),
contentType: "application/json",
dataType: 'json',
type: 'GET',
success: function(a,b,c) {
alert(a);
}
});
嘗試刪除
"type": "GET"
。
jQuery Ajax請求默認為GET。
也許您遇到了瀏覽器XSS的限制。 網頁是否也通過HTTPS提供服務? 如果包含ajax調用的頁面是HTTP,而AJAX端點是HTTPS,則將違反相同的原始策略。 這里有更多討論。
從jQuery doco:
由於瀏覽器安全性的限制,大多數“ Ajax”請求都受相同的原始策略限制; 該請求無法成功從其他域,子域或協議檢索數據。
根據Wikipedia的說法, http://test.com和https://test.com是不同的來源,因此違反了相同的來源政策。 也嘗試將頁面設為HTTPS。
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', authinfo);
},
url: "https://test.com/incident.do?JSON&sysparm_action=getRecords",
dataType: 'json',
success: function(a,b,c) {
alert(a);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.