2015-06-16 76 views
0

我已在HTML中以下REST @FormParam值均爲空

<form name="myform" method="POST"> 
    <input type="text" id="products" name="products" /> 
</form> 

function myForm() { 
     var url = 'rest/products/details/'; 
     var formData = $("#myform").serializeArray(); 
     $.ajax({ 
     url: url, 
     type: 'POST', 
     contentType : "application/x-www-form-urlencoded", 
     dataType: 'json', 
      data: formData, 
     success: function (data) { 
      //callfunc(data); 
     } 
    }); 
} 

在Java服務器端我有以下

@POST 
@Path("/details") 
public List<Product> findProducts(@FormParam("products") String products) { 
..... 
..... 

log.info("prod "+products); --> getting null 

出於某種原因,產品爲空,即使我傳遞正確的價值觀來自html。這可能是什麼原因?

+0

嘗試['serialize()'](https://api.jquery.com/serialize/),而不是['serializeArray()'](https://api.jquery.com/serializeArray/)。你做了一個'console.log(formData)'來看看它看起來像什麼嗎? –

回答

0

問題是相當愚蠢的,我使用名稱而不是id,並導致在服務器端爲所有表單元素爲空。我已更改爲

<form id="myform" method="POST"> 它工作得很好

然而 <form name="myform" method="POST">不起作用。

0

嘗試Consumes註釋

@POST 
@Path("/details") 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public List<Product> findProducts(@FormParam("products") String products) { 
..... 
..... 
+0

我已經試過這個,但仍然無法獲得產品價值。實際上它是空的。 – user75ponic

1
function myForm() { 
     var url = 'rest/products/details/'; 
     var formData = "products=asasa" ; 
     $.ajax({ 
     url: url, 
     type: 'POST', 
     contentType : "application/x-www-form-urlencoded", 
     dataType: 'json', 
      data: formData, 
     success: function (data) { 
      //callfunc(data); 
     } 
    }); 
} 

試試這個並刪除@Consumes註解。問題出在jquery的$("#myform").serializeArray()函數中。

+0

我使用'var formData =「產品= asasa」;'然後我能夠在服務器中接收數據。 – user75ponic

+0

as @peeskillet在之前的評論中說過用'serialize()'而不是'serializeArray()'。這裏是該文檔:https://api.jquery.com/serialize/ –

+0

最後我想出了這個問題,這是相當愚蠢的。如果我使用

,它的效果很好,而不是id,我在中使用了名稱。謝謝 – user75ponic