2014-09-05 145 views
0

我遇到了一個奇怪的問題,即發送到我的Web服務的數據即使值在http請求中,也是空的。這裏是阿賈克斯和休息:Web服務參數爲空

$("#updateProfileInfo").click(function(e){ 
    e.preventDefault(); 
    var jobb = $("#jobbEditBox").val(); 
    var bostad = $("#bostadEditBox").val(); 
    var intressen = $("#intresseEditBox").val(); 
    alert(jobb); 
    alert(bostad); 
    alert(intressen); 
    $.ajax({ 
     type: "post", 
     url: "http://localhost:8080/fakebook/fakebookrest/UserInfoService/json/edituserprofile", 
     data: { 
      "jobb" : jobb, 
      "bostad" : bostad, 
      "intressen" : intressen 
     }, 
     success: function(data){ 
      var jsonData = $.parseJSON(data); 
      alert(jsonData); 
     } 
    }); 
}); 



@POST 
@Path("/json/edituserprofile") 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
@Produces(MediaType.APPLICATION_JSON) 
public boolean produceJSON(
     @QueryParam("jobb") String rawJobText, 
     @QueryParam("bostad") String rawCityText, 
     @QueryParam("intressen") String rawIntresseText, 
     @Context HttpServletRequest request) 
{ 
    System.out.println(rawJobText); 
    User user = (User) request.getSession().getAttribute("user"); 
    System.out.println(""+user.getId()); 
    if(user != null) 
     return userFacade.editProfileInformation(user.getId(), rawJobText, rawCityText, rawIntresseText); 
    else 
     return false; 
} 

everthing其他工作正常,沒有錯誤。回調函數也被調用。唯一的問題是System.out.println(rawJobText);的值爲空。

回答

0

您需要使用@FormParam代替@QueryParam

+0

你能解釋爲什麼請嗎?好的,我現在看到了。 POST方法僅適用於formparam – 2014-09-05 08:00:54

0

老實說,你不一定用@FormParam。你可以做的是去你的防火牆,並允許連接到Web服務所在的端口。通過允許防火牆端口不再阻止對數據的訪問。只要您確定您的Web服務是準確的,就可以工作。您可以使用Postman來測試您的Web服務並查看它應該返回的值。