Javascript 通过json动态发送到服务器的表单数据是否不工作?

Javascript 通过json动态发送到服务器的表单数据是否不工作?,javascript,jquery,json,forms,Javascript,Jquery,Json,Forms,脚本代码: function submitdata(){ alert("hi"); //var formRequest = JSON.stringify($("#submitdatafrm").serializeArray()); var test = JSON.stringify({ "firstName": $('#fname'), "email":$('#email'), }); conso

脚本代码:

function submitdata(){

    alert("hi");
    //var formRequest = JSON.stringify($("#submitdatafrm").serializeArray());


       var test = JSON.stringify({
        "firstName": $('#fname'), 
        "email":$('#email'),

       });
       console.log(test);
       $.ajax({
           type: "POST",
           contentType: 'application/json',
           url: "http://localhost:8080/formdataserver/rest/reqdemo/add",
           data: test ,
           dataType:"text",

           success:successmethod,
           error: function(data,status) {
            alert("Error  "+status);
           }
          });

   }

   function successmethod(data){
    alert("sucess")
   }
Html代码:

<form class="form-horizontal" id="submitdatafrm">

<div class="form-group">
<label class="col-md-4 control-label" for="fname">First Name</label>  
<div class="col-md-6"><input id="fname" name="fname" type="text" placeholder="First Name" class="form-control input-md"></div>
</div>

<div class="form-group">
<label class="col-md-4 control-label" for="email">Email</label>  
<div class="col-md-6"><input id="email" name="email" type="email" placeholder="Email" class="form-control input-md"></div>
</div>



<div class="form-group">
<label class="col-md-4 control-label" for="button"></label>
<div class="col-md-4"><a href="javascript:requestdemo();">Request a demo now</a></div>
</div>

</fieldset>
 </form>

名字
电子邮件
在上面的代码中,当我静态地通过json传递值(硬编码值)时,它工作正常,值存储在数据库中。但是当我动态地传递值时(通过表单传递动态值)未传递值并显示错误警报消息??我在json代码中的错误是什么??请提供任何帮助…

如何发送整个表单: 以下内容足以发送表单中的所有值:

data: $('#submitdatafrm').serialize()
您需要作为JSON发送有什么特别的原因吗?这会将名称/值转换为JSON:

data: JSON.stringify($('#submitdatafrm').serialize())
注意:您需要确保您的目标URL位于同一网站上,以避免跨网站问题(为什么您有绝对URL?)

您的示例数据使用的是
firstname
,但输入名为
fname
,因此可能只是输入错误,但没有很难看到的服务器代码:)

名字里有什么? 从您的类代码中,我看到服务器需要
firstName
的值,因此如果您想简单地
序列化
表单,您需要
name=“firstName”
(而不是
fname
):


可以将该动态值保存在变量中。然后使用这个变量。Giva a try.var fname=$(“#fname”);var test=JSON.stringify({“firstName”:fname,“email”:$('#email'),})@MayurRahul此过程不起作用。它根本不提交值。
“firstName”:$(“#fname”)
-您在这里没有读取输入字段的值,但只获取引用元素的jQuery对象。您需要使用获取字段的值。上面的代码在数据库中存储空值,而不是用户在表单中输入的值…并且在提交值后,文本字段(fname和email)不会被清除。1)您需要显示服务器代码以及可能存在的问题。2) 你为什么希望他们被清除?这是一个Ajax调用,因此您需要在提交成功后自己清除它们。3) 请显示您收到的错误文本:)当我们发送硬编码值示例var test=JSON.stringify({“firstName”:“Ramesh”,“email”:“Ramesh”时,服务器代码工作正常。suresh@gmail.com" }); 但是当使用动态值时,它不起作用。除了名称之外,没有区别。如果您显示您的服务器代码,我可以检查是否有明显的错误会导致它不匹配。(例如,
fname
vs
firstname
。如果没有,我还有其他问题要回答:)您希望我显示哪个服务器代码或类??有很多服务器代码…实体类、实现类、接口或Web服务类??
<input id="fname" name="firstname" type="text" placeholder="First Name" class="form-control input-md">
 var test = JSON.stringify({
    "firstName": $('#fname').val(), 
    "email": $('#email').val(),
 });