Jquery/Ajax.serialize()未完全工作


Jquery/Ajax .serialize() not working fully

我正试图将数据从一个表单发送到另一个要处理的页面,但问题是我要序列化到表单并将信息发送到页面的jquery只发送了两个表单字段中的一个。该表单是从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 +。我在上面做了这件事,但只有一个字段,所以我不需要{}围绕它。有什么想法可以解决这个问题吗?我已经试了几个小时了,我觉得已经很近了,但我觉得多用几双眼睛可能会给我指明正确的方向。

谢谢!

我使用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>