2011-01-25 31 views
0

我目前正試圖從使用jQuery的遠程服務器獲取數據並執行jsonp ajax調用。問題是,無論何時我使用本地服務器,響應都會被評估,當我使用遠程服務器時,它不是。響應格式爲jsonp12345678 [{「key」:「value」}]因此,使用[而不是(通常與JSON一樣),不幸的是,我無法訪問遠程服務器來改變它。我的javascript調用。JSONP調用本地但不在服務器上

$.ajax({ 
      dataType: 'jsonp', 
      jsonp: 'jsonp_callback', 
      url: 'url', 
      error: function(status) { 
       console.log(status); 
      }, 
      success: function (html) { 
       $("#content").text(html.reply); 
      }, 
     }); 
+0

那肯定對我來說看起來不像是有效的JSONP。 –

+0

不幸的是,錯誤回調不能用於jsonp。 –

+0

該調用在本地機器上運行,並且本地和遠程機器上的響應字符串相同。但是,使用[在鍵值對周圍不起作用。只有(圍繞鍵值對工作本地和遠程。任何原因爲什麼? – designitsimple

回答

1

如果遠程服務器不支持JSONP,你將不能夠做到JSONP查詢到它。該服務器具有顯式調用JSONP回調。

0

JSON-P需要實際上是用數據進行函數調用,我能想到的唯一方法是在遠程和本地之間放置一個代理腳本來重新格式化它,但如果你要做的話那麼你可以使用AJAX。

+0

什麼你的意思是使用函數調用,我認爲$ .ajax會自動生成臨時函數,並使用「jsonpxxxxxx」作爲名稱,然後這個名稱會被添加到[{array}]中 – designitsimple

+0

我看到的大多數實現都傳遞了一個回調參數jQuery可以爲你生成,響應是一個函數調用該回調函數與數據作爲參數。'jsonp12345678 [{「key」:「value」}]'這沒有任何意義......爲什麼它會迴應將整個對象作爲數組索引返回,這是回調自動生成數組的一部分。 我會製作一個簡單的代理腳本,將斷開的JSON-P從respo因此它返回正常的JSON並使用AJAX,或者只是用括號替換括號並使用本地JSON-P。 –

相關問題