Jquery / Ajax .serialize()无法正常工作

时间:2016-05-17 17:36:37

标签: javascript php jquery ajax

我正在尝试将数据从表单发送到另一个要处理的页面但问题是我的jquery序列化形成并将信息发送到页面只发送2个表单字段之一。这个表单是从php开始的,看起来像这样:

 echo "<td>{$_SESSION['givenname']}</td><td><form id='commentAdd' method='POST' action='javascript:void(0);'><textarea name='Description' id='description' rows='2' cols='50'></textarea></td><td><input type='text' id='time' name='time'/></td><td><input type='submit' class='btn btn-info' id='addComment'></form></td>";

分解它看起来像:

<td>{$_SESSION['givenname']}</td>
<td><form id='commentAdd' method='POST' action='javascript:void(0);'><textarea name='Description' id='description' rows='2' cols='50'></textarea></td>
<td><input type='text' id='time' name='time'/></td>
<td><input type='submit' class='btn btn-info' id='addComment'></form></td>";

我认为问题在于formtd的位置会限制哪些字段被序列化。如果我在输入时间之前将<form>标记移到右边,那么我会得到那些数据,但是当我将它移动到第一个td时,我什么也得不到,当我将它保留在我所拥有的位置时,我只得到描述。我试图找出如何使用jquery准确地告诉它作为数据发送哪些字段,但我只是得到错误,我尝试了六种方法。我相信这可能是一个解决方案,但我不太确定实施。要解释我的意思,请查看我目前的序列化代码:

$("#addComment").click(function(){
   $.ajax({type: 'post', data: { myData: $('#commentAdd').serialize() }, url: "addComment.php", success: function(info){
     $(".sort-Table-Return").html(
                    info
     );
   }});
});

我尝试做的是将data:内的信息更改为('#time').val();('#description').val();,但我在控制台中遇到有关意外字符串的错误。我也尝试过使用这种方法:

var time = $('#time').val();
var desc = $('#description').val();
$("#addComment").click(function(){
  $.ajax({type: 'post', data:  {'desc=' +desc, 'time=' +time } , url: "addComment.php", success: function(info){
   $(".sort-Table-Return").html(
     info
   );
  }});
 });

这给了我一个unexpected token +我这样做,但只有一个字段,所以我不需要围绕它{}。任何想法如何解决这一问题?我现在已经尝试了几个小时,我觉得它很接近,但我觉得一些额外的眼睛可以指向正确的方向。

谢谢!

1 个答案:

答案 0 :(得分:1)

我使用serializeArray()方法。由于某种原因,它不适用于禁用输入,这就是为什么我确保我之前禁用禁用属性。

希望它会有所帮助。

样本如下。

		var formName = "commentAdd";
    var myForm = $('#'+ formName);
    var disabled = myForm.find(':input:disabled').removeAttr('disabled');
    var formVals = myForm.serializeArray();
    
    $("#result").html(JSON.stringify(formVals));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<td>{$_SESSION['givenname']}</td>
<td><form id='commentAdd' method='POST' action='javascript:void(0);'>
 <textarea name='Description' id='description' rows='2' cols='50'> aaaaaaaaa</textarea></td>
<td><input type='text' id='time' name='time' value="12:00"/></td>
<td><input type='submit' class='btn btn-info' id='addComment'></form></td>";

<div id="result"></div>