我正在寻找一种非常简单的方法来获取所有输入元素(以及一些分隔符)的所有值,然后使用已准备好的提交函数快速将它们发送到PHP文件。
我提出了一个非常粗略的解决方案,但需要进行大量优化。
现在,当我点击提交按钮时,我会调用一个函数
function $('#submit').click(function(){
var $divValues = new Array();
$divValues[0] = $('#divName').html();
$divtValues[1] = $('#divImgName').html();
var $values;
$values = $(':input').serializeArray();
$fileName = "php.php?firstVal=\""+$divValues[0]+"\"&secondVal=\""+$divtValues[1]+"\"&thirdVal=\""+$values['firstValName']+"\"&ect..."
//then i simply call the ajax function which will send the information to the php file
fetch($fileName);
});
也许我可以使用以下事实:我的关联数组中的值的名称和我的php文件中检索的变量的名称匹配,而不是将我的文件名设置为..."&thirdVal=\"" ...
我会改为使用{的名称{1}}在这个例子中它将是第三个值(虽然我不知道该怎么做)
或者可能有更简单的方法来实现我想要的东西。 关于如何以一种很好的方式实现这段代码的任何想法?
更新
现在我的html中没有表单元素,但只要我看到一个解决方案需要它来使代码更简单,我就可以轻松添加一个...
我知道我可以使用serialize()函数,但我的问题是处理返回的数组的一种很好的方法。 (或者可能使用2个数组,其中一个名称为其他值或二维数组)
无论哪种方式,我只是希望看到什么是获取数据和使用正确的PHP文件值创建$values['firstValName']
的简单方法
我很感激答案中的一些代码或伪代码,它们显示了使用所有值创建fileName的简单方法
如果有人不明白我的要求或需要一些澄清,那么他们应该在下面发表评论,我可以试着让自己明白。
答案 0 :(得分:3)
由于您正在使用jQuery,因此您可以将其AJAX方法与serialize()一起应用于整个表单。您可以通过clicking here阅读有关它的文档。您还可以通过clicking here,here和here阅读有关jQuery的AJAX方法的文档。
根据您的要求,这是一个非常简单的例子:
$.post("test.php", $("#testform").serialize());
您可以从我引用的文档中获得有关如何使用$ .post或$ .get函数所需的其他内容。
Serialize还负责对所有变量进行urlencoding,因此您不必担心这一点。
修改强>
没有必要有表格。您可以使用上面的serializeArray()执行您要执行的操作,除了(a)$(':input')不选择任何内容和(b)您应该使用serialize()而不是serializeArray()。因此,如果没有表单,代码将如下所示:
$.post("test.php", $("input,select,textarea").serialize());
这将正确地请求脚本正确编码数据,然后您可以在PHP脚本中从$ _POST或$ _GET中读取它,具体取决于您是使用$ .post还是$ .get来请求脚本。