【发布时间】:2014-07-27 04:30:14
【问题描述】:
大家好,我正在尝试通过 AJAX 将表单字段值作为数组传递到 PHP 文件,然后将数据写入 mysql 数据库。
我的标准表单包含一组字段条目:
<input type="text" name="rName[]">
<input type="text" name="rDateS[]">
<input type="text" name="rDateF[]">
<input type="text" name="rCost[]">
然后我在点击时将这些值推送到我的 php 文件中
$("#addRates_Submit").click(function() {
var rName = $('#rName').val();
var rDateS = $('#rDateS').val();
var rDateF = $('#rDateF').val();
var rCost = $('#rCost').val();
var proceedc = true;
if (proceedc)
{
//Ajax post data to server
$.ajax({
url: "myphpfile",
type:"POST",
data: {
"rName":rName,"rDateS":rDateS,"rDateF":rDateF,"rCost":rCost},
dataType: "text",
success:function(data) {
// This outputs the result of the ajax request
console.log(data);
$('#resultDiv').html('<center><p style="color:#ffffff;">Rates Added.</p></center>');
},
error: function(errorThrown){
console.log(errorThrown);
$('#resultDiv').html('A problem has occurred.' + errorThrown.responseText);
return false;
}
}); // end ajax
} // end process
}); // end rates submit click
PHP 文件:
$rName = filter_var($_POST["rName"], FILTER_SANITIZE_STRING);
$rDateS = filter_var($_POST["rDateS"], FILTER_SANITIZE_STRING);
$rDateF = filter_var($_POST["rDateF"], FILTER_SANITIZE_STRING);
$rCost = filter_var($_POST["rCost"], FILTER_SANITIZE_STRING);
foreach($rName as $key => $n ) {
$oaQuery="INSERT INTO property_rates (pID,rName,rDateS,rDateF,rCost) VALUES ('$pInsertID','$n','$rDateS[$key]','$rDateF[$key]','$rCost[$key]')";
$oaResult=mysql_query($oaQuery);
}
从控制台日志中我收到以下错误:
在第 44 行为 foreach() 提供的参数无效。我尝试添加 is_array($rName) 并消除了错误,但数组没有向数据库发布任何内容。是否可以通过 ajax 提交表单字段数组,然后让 php 知道它是什么,或者我需要让数组出现在 jquery 端,然后将该 jquery 数组数据传递给 php 数组。
如果我将这些插入作为单个查询而不是在数组中进行,则可以正常工作。但它就像阵列从未真正被构建。 (旁注:我的表单会在用户每次添加字段时动态添加字段,并相应地将其标记为 rName[]、rDateS[]、rDateF[] 和 rCost[]。
【问题讨论】:
-
$('#rName')之类的选择器不适用于您的输入元素。应该是$("input[name='#rName[]']")