2012-08-03 164 views
2

我正在開發一個需要訪問某個遠程Web服務的移動應用程序。我使用jQuery.ajax(),並且由於相同的源策略,我不得不使用JSONP來完成我的請求。 我的客戶的要求是這樣:使用jQuery訪問遠程Web服務

$.ajax({ 
    type: "GET", 
    url: "http://www.foo.jws/bar", 
    contentType: "application/json; charset=utf-8", 
    data: {}, 
    dataType: 'jsonp', 

    success: function(msg) { 
     console.log(msg); 
    }, 
    error: function() { 
     console.log('error'); 
    } 

}); 

我不斷收到的錯誤是「未捕獲的SyntaxError:意外的標識符」

什麼我doning錯了嗎?

編輯:在WS的數據是XML

回答

2

你在這裏失去了功能。

error: function() { 
    console.log('error'); 
} 

另外,取出尾隨逗號。

+0

謝謝,但我只是從我的文本編輯器中複製它錯誤。我修復了原來的帖子。我希望它只是... – Slatiner 2012-08-03 20:58:21

+0

你看到的尾隨逗號很可能是「Uncaught SyntaxError:Unexpected identifier」錯誤的原因。 – Gromer 2012-08-03 21:09:35

+0

@ user1575127:問題可能是JSON本身。 – Ryan 2012-08-03 21:15:26

0

您的錯誤回調代碼不正確。我不確定這是否僅僅是因爲你在這裏鍵入了代碼,或者複製/粘貼了它。應該是:

error: function (jqXHR, textStatus, errorThrown) { 
    console.log('error'); 
} 

然後,您可以從進入錯誤回調的參數中獲得有關您的調用正在進行的更多信息。

編輯:好的,由於您從服務器獲取XML,因此您需要將dataType從jsonp更改爲xml。 dataType選項告訴jQuery返回期望的數據類型。

$.ajax({ 
    type: "GET", 
    url: "http://www.foo.jws/bar", 
    contentType: "application/json; charset=utf-8", 
    data: {}, 
    dataType: 'xml', 
    success: function(msg) { 
     console.log(msg); 
    }, 
    error: function() { 
     console.log('error'); 
    } 
}); 
+0

傳遞錯誤函數中的參數,我確實得到了更多的信息。 textStatus = parsererror,errorThrown =錯誤:jQuery17104335657299961895_1344027946662未被調用。 仍然不知道如何從中繼續。 – Slatiner 2012-08-03 21:06:03

+0

你知道ajax調用是否連接到遠程服務器? – Gromer 2012-08-03 21:10:17

+0

好吧,檢查控制檯,錯誤的原因'未捕獲的SyntaxError:意外的令牌<'是來自遠程服務器,所以我猜測該調用得到它很好。 – Slatiner 2012-08-03 21:23:28