簡短的問題:有沒有辦法讓服務器發出jsonp請求,捕獲請求,但不會將其解析爲javascript?我在jQuery 1.5中使用dataType:「jsonp text」,但它不起作用。發送請求作爲jsonp,將響應解釋爲文本,使用jQuery 1.5
我想通過jsonp通過AJAX訪問跨域URL。問題在於其他域(在我的大學列出的目錄)很老,我懷疑服務器支持jsonp。
- 在Firefox中,我收到「XML標籤名稱不匹配(預期META)」錯誤。在chrome中,我得到一個「Uncaught SyntaxError Unexpected token <」,它們都指向一個對應於我的AJAX請求的文件。來自錯誤回調的錯誤字符串是「parsererror」。
- 我無法進行正常的AJAX調用 - 當我將數據類型更改爲「text」或將其全部刪除時,另一個域抱怨用戶未通過身份驗證並重定向至登錄頁面 - 即使我已經登錄瀏覽器端。當dataType是jsonp時,這不會發生。
- 我知道服務器需要支持JSONP,我不這麼認爲,但是當我將dataType更改爲JSONP時,我可以看到Chrome和Firefox都顯示響應頁面資源 - 所以服務器實際發送對瀏覽器的響應(一個靜態HTML網頁+一些java腳本) - 包含我想要獲取的數據。
- 問題是,jQuery試圖解析JavaScript的響應,並失敗(因爲它不是JavaScript)。所以數據最終在瀏覽器中 - 我只需要訪問它!
- 使用dataType:「jsonp text」,它應該表明發送一個jsonp請求,並將響應解釋爲文本沒有區別 - 仍然是一個分析錯誤。
我想要的是:一種以純文本的形式訪問來自jsonp請求的響應的方法。或者,如果我可以從失敗的jsonp請求訪問原始響應 - 那也可以。
在此先感謝!
代碼:
ajax_url = 'https://somesite/?searchTerm='+query+'&searchType=lastname';
var jqxhr = $.ajax({type:"GET",
url: ajax_url,
dataType:"jsonp text",
callback: "whatever",
success:function(responseData) {
$('div#content').text(responseData.slice(0, 100));
dbg(responseData.slice(0,100));
}})
.success(function() { alert("success"); })
.error(function(obj, errStr) { alert("error"); dbg("error: " + errStr + "test: " + test.responseText + this.responseTxt);})
.complete(function() { alert("complete"); });
你有沒有試過把你訪問的數據放在一個js變量中,然後用js標籤把它封裝起來。似乎是有道理的,如果它試圖把它解析爲js。 – 2012-02-11 09:29:14