2013-04-12 60 views
0

我建立一個既應用程序和服務器(不幸的是不同的域)跨域jQuery的阿賈克斯JSONP

在應用我有:

$.ajax({ 
    url: BASE_URL + "api/create", 
    type: "get", 
    async: false, // why do I need this 
    dataType: "jsonp", 
    data: { 
    "auth_token": "cBQHASwKszsW4e75unK6" 
    }, 
    error: function(error) { 
    alert(JSON.stringify(error)); 
    }, 
    success: function(data) { 
    alert(data); 
    } 
}); 

我知道,服務器返回(當我去給它在瀏覽器中):

jQuery1910041686943266540766_1365730282085({"error":"User does not exist","status":400}) 

(這是正確的數據)

然而, Ajax請求失敗,被列爲狀態爲「失敗」,然後鍵入「待定」

我不知道這是怎麼回事這裏


我也曾嘗試:

$.getJSON(BASE_URL + "api/create?auth_token=cBQHASwKszsW4e75unK6&callback=?", function(data) { 
    alert(JSON.stringify(data)); 
}); 

這也失敗了

+1

你有'jQuery1910041686 ...'沒有指定回調函數var? 「Firebug」的'Net'選項卡中有哪些地址? – Narek

+0

據我所知,'async'對於jsonp不能是false。不是說它與您的問題有關,但跨域jsonp請求會添加腳本標記並且是異步的。 –

+0

localhost:3000/api/create?callback = jQuery19101939692951273173_1365751304024&auth_token = cBQHASwKszsW4e75unK - 回答第一個問題,回調參數顯然是由jquery – Shazam

回答

-1

爲此,您需要創建一個代理頁面。 例如:proxy.php

呼叫請求直接調用proxy.php通過AJAX

讓知道它的工作原理妳。

步驟: 1.創建一個新頁面proxy.php 2.使用CURL或File_get_contents從外部URL獲取數據。 3.通過ajax代替跨域URL調用proxy.php。

+1

不明白如何調用一個頁面proxy.php將幫助 – Shazam

+0

我更新了我的答案檢查@Shazam – deep2mail

+0

@ deep2mail - 它使用JSON-P。應該不需要涉及代理。 – Quentin