2012-11-14 114 views
0

我正在嘗試編寫一些調用我創建的Web服務的JavaScript。此Web服務是另一個無法通過JQuery Ping Web服務

function ping() { 
    $.ajax({ 
    url: "http://myserver/OtherSite/ping?$format=json", 
    dataType: "jsonp", 
    type: "GET", 
    success: ping_Succeeded, 
    error: ping_Failed 
    }); 
} 

function ping_Succeeded(result) { 
    alert("success"); 
} 

function ping_Failed(e1, e2, e3) { 
    console.log(e1 + "\n" + e2 + "\n" + e3); 
} 

一部分。當我執行此代碼,我在小提琴手發現我的請求,我的web服務是好的。 200返回。我期待的JSON就在那裏。但是,在JavaScript控制檯中,我看到一個錯誤消息:「Uncaught SyntaxError:Unexpected Token:」。

在尋找在控制檯中,我注意到了以下內容:「消息:‘jQuery18209005181000102311_1352904505837當時不叫’

我不明白我在做什麼錯誤有人能告訴我什麼是錯的。 ?我的代碼

謝謝

+1

更換dataType:"jsonp"嘗試採取了$ $的格式 – chrislhardin

+0

它是一個jsonp端點,還是返回json? – hvgotcodes

+0

「我期待的JSON在那裏」。小心分享它? –

回答

0

看起來你缺少包裝的JSON成回撥電話 由於dataType:"jsonp"的jQuery將請求發送到一個URL是這樣的:

OtherSite/ping?$format=json&callback=jQuery18204326352379284799_1352906037982&_=1352906037995 

所以,你必須從回調取了個名字和包裝你的反應是這樣的(在服務器上):

jQuery18204326352379284799_1352906037982({ "d":{ "result":"Test 37" } }) 

或者你可以嘗試用dataType:"json"

+0

我嘗試將「jsonp」更改爲「json」,並且收到一個錯誤消息:「XMLHttpWebRequest無法加載[url] Access-Control-Allow-Origin不允許使用Origin [域],我完全不瞭解您的意思通過「從回調中取名幷包裝...」你能告訴我這將如何改變我現有的請求嗎? – user687554

+0

你有權訪問該「http:// myserver/OtherSite/ping」代碼嗎? –

+0

如果是這樣,比起你只需要從GET請求中獲得回調值並添加你的響應,所以它看起來像傳遞給它的對象的JS函數調用一樣,在PHP中它就像:'$ callbackname = $ _GET ['callback']; echo $ callbackname。「(」。$ json_response。「)」;' –