2017-03-24 19 views
0

我有一個使用使用與方法後

$.ajax(
    type: 'POST, 
    dataType:"json", 
    url: 'test.com' 
    data: { mail: '[email protected]' } 
) 

,我得到我的GlassFish服務器做這樣

HttpServletRequest request; 
request.getParameter('mail'); 

什麼我朝着我的應用程序的PhoneGap應用程序讀取本地的反應,所以我在做

fetch('test.com', { 
    method: 'POST', 
    headers: { 
    'Accept': 'application/json', 
    'Content-Type': 'application/json', 
    }, 
    body: JSON.stringify({ mail: '[email protected]' }), 
}) 

但這並不起作用,我的glassfish服務器沒有得到我的參數。 我該怎麼辦? 毫無疑問,我不想在服務器端進行更改!

+0

當它失敗時,你在客戶端看到什麼錯誤消息? – sideshowbarker

+0

我在客戶端沒有任何錯誤消息。它只是request.getParameter('mail');在我的服務器端是空的。 – alexandre

回答

2

在您的第一個示例中(使用$.ajax()),您未發送JSON正文。你實際上正在發送一個查詢字符串。在你的反應例子中,你發送一個JSON正文,這需要你的服務器以不同的方式處理。

您將需要更改您的服務器處理器實際上接受JSON否則你就必須發送一個查詢字符串反應這看起來是這樣的:

fetch('test.com', { 
    method: 'POST', 
    headers: { 
    'Content-Type': 'application/x-www-form-urlencoded', 
    }, 
    body: $.param({ mail: '[email protected]' }), 
}) 

如果沒有jQuery訪問你將無法使用$.param()。對於這個特殊的例子,你要發送的查詢字符串將

body: "[email protected]" 

這是相當簡單的序列化數據的查詢字符串,並創建一個功能,將做到這一點很容易。

作爲一個方面說明,在爲了發送JSON體與$.ajax()電話,你會想要做這樣的事情:

$.ajax(
    type: 'POST, 
    dataType:"json", 
    url: 'test.com' 
    data: { mail: '[email protected]' } 
    contentType: "application/json", 
) 

注意contentType參數,它實際上告訴jQuery如何格式化體的請求

+0

不幸的是我測試過,它不工作... request.getParameter('mail');仍然是空的 – alexandre

+0

任何想法,爲什麼這仍然無法正常工作? – alexandre

+0

我仍然卡住,你有什麼想法,爲什麼這不起作用?我可以嘗試什麼? – alexandre