如果這是一個重複的問題,我會很樂意被重定向到答案:)。jQuery.ajax():無法訪問兩個返回的json對象(jsonp)
一些背景資料:
我有一個小物件,處理JSONP請求。這段代碼執行時
直到最近,我用的是純JavaScript這樣處理的請求......
this.fetchJsonp = function(){
//the 'request' variable holds the URL and parameters for the request.
var request = this.request;
//creates a script element
var jsonpCall = document.createElement('script');
//gets jsonp request
jsonpCall.src = request;
//adds script to DOM, which goes on to request the JSONP from the service.
document.getElementsByTagName('head')[0].appendChild(jsonpCall);
};
後,回調函數被調用和JSONP對象傳遞給它。由於被稱爲服務設置方式,服務發送我在這個格式2個JSONP對象:
callbackWrapperFunc({"arrayName":[{item1:"hello",item2:"world"}]}, {anotherImportantItem:"!"});
我可以傳遞這些對象爲這樣的回調函數...
this.myCallBackFunction(firstObject, secondObject){
//manipulate data here
}
問題:
因爲我已經改變了我的方法,現在我使用jQuery來處理JSONP請求,因爲它讓我更容易地處理錯誤。
//snippet of my jQuery ajax call:
jQuery.ajax({
url: this.request,
type: 'get',
dataType: 'jsonp',
success: function(firstObject, secondObject) {
//manipulate data here
}
});
我知道,傳遞到「成功」的參數不會以同樣的方式爲我的原代碼,因爲jQuery的Ajax對象返回第二個和第三個參數作爲textStatus(詳細介紹了呼叫是否是成功的工作或失敗)和jqXHR對象。
讓我訪問數據的第一個參數只讓我可以訪問第一個JSON對象,而不是第二個參數。我似乎無法找到訪問第二個對象的方法(我也嘗試通過對象「循環」但無濟於事:也許我做錯了?)。
這可能是非常簡單的瞭解我!任何幫助將不勝感激!
如何在服務器端腳本中發送兩個JSON對象?!!?你爲什麼不在數組中發送兩個對象?像這樣:[{..},{..}] – Mohebifar
儘管你正在做的事情是完全可能的,由於某種原因,JSONP已經發展成預期/假設(通過沒有技術限制!),只有單個參數將被傳遞給回調函數。正因爲如此,我不會驚訝(沒有時間檢查源代碼),如果jQuery只是普通*不處理這個;你可能不得不考慮@ Mohebifar傳遞一個包含兩個對象的單個數組的方法,或者傳遞一個父對象,其中的兩個對象都是屬性。 – Matt
嗨,大家好。這是我害怕自己。我將不得不考慮@ Mohebifar的建議。感謝您的快速回復。 – Mark