通过json动态发送到服务器的表单数据不起作用?

时间:2014-09-24 10:07:22

标签: javascript jquery json forms

脚本代码:

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代码中做错了什么?任何帮助都会被赞赏...

1 个答案:

答案 0 :(得分:0)

如何发送整个表单:

以下内容足以以表格形式发送所有值:

data: $('#submitdatafrm').serialize()

您需要以JSON身份发送特定原因吗?这应该将名称/值转换为JSON:

data: JSON.stringify($('#submitdatafrm').serialize())

注意:您需要确保您的目标网址位于同一网站上以避免跨网站问题(为什么您有绝对网址?)。

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

什么名字?

从您的类代码中我看到服务器期望值为firstName,因此如果您只想serialize表单,则需要name="firstname"(不是{{1} }}):

fname

测试样本需要val():

作为评论中提到的<input id="fname" name="firstname" type="text" placeholder="First Name" class="form-control input-md"> ,您的示例代码实际上并不是发送字段的值,而是发送整个jQuery对象。应该是:

CBroe