![](/img/trans.png)
[英]jQuery ajax call is returning response data as String instead of Object
[英]jQuery AJAX call not returning data
我在這里有點傻。 我的ajax調用每次都運行error:函數。 我知道數據以JSON的形式返回,但是我已經將數據類型作為jsonp進行了處理,以允許跨源的東西。 我認為我無法做任何其他事情,除非我忘記了一些顯而易見的事情。 請-這有什么問題:
function sartleApi(type,endpoint,object,callback){
$.ajax({
contentType: "application/json",
dataType: 'jsonp',
type:type,
data:object,
url:"http://dev.sartle.com/includes/ajax_reviewcomment.php?rid=1178",
success:function(data){
callback(data);
},
error: function (xhr, textStatus, errorThrown) {
alert(xhr.statusText);
alert(xhr.responseText);
alert(xhr.status);
alert(errorThrown);
}
});
}
您的網站不支持JSONP。
JSONP只是通過<script>
標記將JSON對象傳遞給全局回調函數的一種奇特的方式。 它不首先發送AJAX請求,而是創建一個<script>
標簽,從而規避了跨域限制。
JSON響應如下所示:
{"foo": "bar"}
但是JSONP響應是:
some_callback({"foo": "bar"})
該PHP腳本不會將JSON響應包裝在回調函數中(后者的名稱通常是通過callback
GET參數指定的),因此您根本無法發出JSONP請求。 該請求將成功,但是不會調用全局回調函數,因此您將無法使用JSON。
stlll,這似乎是跨域問題:請嘗試使用此庫https://github.com/padolsey/jQuery-Plugins/blob/master/cross-domain-ajax/jquery.xdomainajax.js
作為jsonp
,結果已經是帶有javascript對象參數的回調函數。 確保實現了服務器返回的功能:服務器可以返回my_callback({...})
。 您需要在客戶端實現my_callback
函數。
在success
和error
功能上放置一些alert / console.log。 發布問題前,請務必先進行一些調試。
如評論中所述:說明ajax調用的返回代碼。
因此,試圖規避跨域問題,事實證明使用jSONP是一個壞主意。 我正在從本地主機運行這些調用,所以我將ajax調用中的網址更改為
url:"http://localhost/includes/ajax_reviewcomment.php?rid=1178"
我將這個URL構建為動態的,以便當前URL始終與服務器域一致,並且我應該處於良好狀態!
在類型中,您需要輸入“ GET”或“ POST”
$.ajax({
contentType: "application/json",
dataType: 'jsonp',
type:type, <<<<<<------ here
data:object,
url:"http://dev.sartle.com/includes/ajax_reviewcomment.php?rid=1178",
success:function(data){
callback(data);
},
error: function (xhr, textStatus, errorThrown) {
alert(xhr.statusText);
alert(xhr.responseText);
alert(xhr.status);
alert(errorThrown);
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.