我正在尝试将表单发送到控制器.jQuery文档说.serializeArray()
应该发送一个json数组,而.serialize()应该创建一个查询字符串.
但是,当我尝试它并使用IE9 F12模式进行检查时,它看起来像一个查询字符串,在这两种情况下.我打电话给谁...
我错过了什么?
我有这个HTML:
<form id='myform'>
<input name='title' value='foo'/>
</form>
Run Code Online (Sandbox Code Playgroud)
我从它创建一个对象数组,如下所示:
var dataArray = $("#myform").serializeArray();
Run Code Online (Sandbox Code Playgroud)
现在我如何访问dataArray中的'title'?这不起作用:
alert(dataArray['title']);
alert(dataArray['title'].val());
Run Code Online (Sandbox Code Playgroud) 我正在使用表单中的多个提交按钮来处理表单提交.我知道提交按钮名称没有序列化,但我需要将该名称传递给处理脚本.
示例代码:
<form id='newqueryform' action='process-forms.php' method='post' >
<input type='hidden' name='formname' value='newqueryform'>
<div id='runit'><input type='submit' name='runit' value='Run' /></div>
<div id='saveit'><input type='submit' name='saveit' value='Save' /></div>
</form>
Run Code Online (Sandbox Code Playgroud)
这里有2个提交按钮,但在jQuery代码中:
$('#workarea').on('submit','#newqueryform', function(e)
{
var formData = $(this).closest('#newqueryform').serializeArray();
alert(JSON.stringify(formData));
...
Run Code Online (Sandbox Code Playgroud)
2个提交按钮不显示!! 仅显示其他输入字段.我如何知道按下了哪个按钮?
我有一个使用ajax动态创建的表单(因为表单元素的数据必须来自数据库),我想序列化表单的元素以通过ajax提交.我目前只是使用jQuery网站上的代码来测试我的理论,看看我是否可以拿起表单元素,这就是问题所在:
$(document).ready(function() {
$('#btnCustomSearch').live('click', function() {
$('#results').html('');
alert($('#customSearchTable :input').serializeArray());
// get all the inputs into an array.
var fields = $('#customSearchTable :input').serializeArray();
jQuery.each(fields, function(i, field) {
$("#results").append(field.name + " = " + field.value + ", ");
});
// now we'll reformat the data as we need
// here we'll send the data via ajax
});
});
Run Code Online (Sandbox Code Playgroud)
我需要在提交之前对数据进行一些更改并且此代码尚未编写,但我发现,页面加载时存在的页面上的任何输入元素都是正确的,任何元素都是使用Javascript填充正确,但是使用ajax创建的任何内容都将被忽略.
我知道这通常是使用"live"解决的,但我不知道如何解决这个问题serializeArray()
.使用Ajax会向其中添加其他表单元素#customSearchTable
,这些元素是未被拾取的元素.
任何帮助非常感谢.
谢谢
我正在尝试这种我见过的新方法serializeArray()
.
//with ajax
var data = $("#form :input").serializeArray();
post_var = {'action': 'process', 'data': data };
$.ajax({.....etc
Run Code Online (Sandbox Code Playgroud)
所以我得到了这些键值对,但是我如何使用PHP访问它们?
我以为我需要这样做,但它不会起作用:
// in PHP script
$data = json_decode($_POST['data'], true);
var_dump($data);// will return NULL?
Run Code Online (Sandbox Code Playgroud)
谢谢,理查德
快问
如果我使用jquery的.serializeArray();
函数序列化了一个表单,我是否需要对它做任何事情才能使用jquery的ajax发送它data:
?
我可以寄出
[{name: inp1, value: 'val1'}, {name: inp2, value: 'val2'}]
原样,或者我需要以某种方式预处理它?
而且,在php中我该怎么看?
我试图发布一些从非形式元素构建的数据,但我似乎无法破解它.
如何以serializeArray()
与表单字段相同的格式创建数组?
我已经尝试了几种变体,但它只选择了最后一个.active
标签.
$('li.tag.active').each(function() {
values = {};
values['tagID'] = $(this).attr('id');
});
$.post("/scripts/php/process.php",{
'data': data,
funcName : 'tagResults'
},function(results){
$("#results").html(results);
})
Run Code Online (Sandbox Code Playgroud) 我试图将数组作为字符串传递
$(document).ready(function(){
var args = {};
$('.radio').click(function(){
var ob = $(this).siblings('select');
$('#uploader-wrapper').html(pre_load());
$('.radio').siblings('select').attr('disabled', 'disabled');
ob.removeAttr('disabled');
args[ob.attr('name')] = $(':selected', ob).text();
loader( args.serializeArray() );
})
$('select[name=foo]').change(function(){
var ob = $(this);
$('#uploader-wrapper').html(pre_load());
args[ob.attr('name')] = $(':selected', ob).text();
loader( args.serializeArray() );
});
});
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误
args.serializeArray is not a function
任何人都可以看到我做错了什么?
serializeArray()仅适用于输入和textarea.如何选择,复选框和单选按钮.我需要知道从选择框中选择了哪个选项以及是否选中了复选框.我们怎样才能在数组中获取所有这些信息.