我正在尝试将数据从表单发送到另一个要处理的页面但问题是我的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>";
我认为问题在于form
中td
的位置会限制哪些字段被序列化。如果我在输入时间之前将<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 +
我这样做,但只有一个字段,所以我不需要围绕它{}
。任何想法如何解决这一问题?我现在已经尝试了几个小时,我觉得它很接近,但我觉得一些额外的眼睛可以指向正确的方向。
谢谢!
答案 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>