![](/img/trans.png)
[英]Receive XML response from Cross-Domain Ajax request with jQuery
[英]Return String from Cross-domain AJAX Request
我正在尋找一種從跨域“ AJAX”請求返回單個JSON / JSONP字符串的方法。 與其請求字符串並讓JQuery自動將其作為通用對象返回,我不希望在轉換發生之前獲得字符串的保留。 這里的目標是自己解析它,以便我可以將其直接轉換為某種特定類型的新對象(例如Person對象)。
因此,為了清楚起見,我不希望在幕后進行任何字符串到通用對象的轉換,並且這必須在其他域中進行。
這是我想做的一個無效示例:
$.ajax({
type: 'GET',
url: 'http://www.someOtherDomain.com/GetPerson',
dataType: 'text',
success: parseToPerson
});
function parseToPerson( textToParse ) {
// I think I can do this part, I just want to get it working up to this point
}
只要解決方案不涉及JQuery,我都會非常高興。 我更喜歡使用JQuery。 從我讀到的內容來看,用於獲取JSONP數據(動態創建腳本元素)的javascript技術可能會起作用,但我似乎無法使它對我有用。 如果我將AJAX調用中的dataType更改為“ JSONP”,則可以控制要向其請求數據的域,並且可以獲取數據,因此我知道這是可行的。
如果要從另一個域中檢索數據,則需要使用JSONP(還有其他選項,但是,如果您控制服務,則JSONP到目前為止是最簡單的)。 jQuery調用將如下所示:
$.ajax({
// type: 'GET', --> this is the default, you don't need this line
url: 'http://www.someOtherDomain.com/GetPerson',
dataType: 'jsonp',
success: parseToPerson
});
向您的服務發送的實際請求將是http://www.someOtherDomain.com/GetPerson?callback=arbitrary_function_name
。 在服務方面,您將需要返回以下數據:
arbitrary_function_name("the string (or JSON data) that I want to return");
因此,您需要檢查querystring參數,獲取callback
參數的值,並將其回顯,就像您正在調用具有該名稱的Javascript函數一樣(通過),傳入要提供的值服務。 然后,將使用您提供的服務調用success
函數。
如果要將返回的數據反序列化為Javascript對象,則最好返回JSON數據而不是返回字符串,因此服務返回的數據如下所示:
arbitrary_function_name({
"name":"Bob Person",
"age":27,
"etc":"More data"
});
這樣,您就不必擔心解析字符串-它已經位於易於使用的Javascript對象中,可以初始化您的對象。
不確定如何將其與jsonp結合使用,但是也許轉換器是您想要的?
$.ajax(url, {
dataType: "person",
converters: {
"text person": function(textValue) {
return parseToPerson(textValue);
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.