我正在尝试将一组表单参数发送到PHP脚本进行处理。
我之前使用$.post
完成了类似的操作,但现在我正在尝试使用$.ajax
严格执行此操作。
这是应该将所有变量发送到PHP脚本的jQuery click事件:
$('.searchSubmit').on('click', function()
{
var searchCriteria = {
import_bill: $('#import_bill').val(),
import_ramp: $('#import_ramp').val(),
import_delivery: $('#import_delivery').val(),
// few more form parameters
};
$.ajax({
url: 'api/railmbs.php', // process script
type: 'POST',
data: searchCriteria, // parameter group above
dataType: 'html' // had this set to json, but only got fail
success: function(data, textStatus, jqXHR)
{
console.log(data);
},
error: function(jqHHR, textStatus, errorThrown)
{
console.log('fail');
}
});
});
以下是PHP脚本,名为railmbs.php:
<?php
if(isset($_POST['searchCriteria']))
{
$value = $_POST['searchCriteria'];
$_SESSION['where'] = "";
$import_bill = mysqli_real_escape_string($dbc, trim($value['import_bill']));
$import_ramp = mysqli_real_escape_string($dbc, trim($value['import_ramp']));
$import_delivery = mysqli_real_escape_string($dbc, trim($value['import_delivery']));
echo $import_bill; // just trying to echo anything at this point
}
?>
不确定我做错了什么。如果我在echo
之前hello
IF
,则控制台将相应地输出。但我似乎无法从echo
内部IF
获取任何内容。
有没有人看到我的错误?
答案 0 :(得分:1)
首先。为什么不使用$("form").serialize()
?它会更清洁。
其次,您在根对象中传输数据,因此为了获取值,请检查$_POST
数组。
而不是$value = $_POST['searchCriteria']
使用$value = $_POST;
。
这个PHP代码应该可以工作:
<?php
if(isset($_POST))
{
$_SESSION['where'] = "";
$import_bill = mysqli_real_escape_string($dbc, trim($_POST['import_bill']));
$import_ramp = mysqli_real_escape_string($dbc, trim($_POST['import_ramp']));
$import_delivery = mysqli_real_escape_string($dbc, trim($_POST['import_delivery']));
echo $import_bill; // just trying to echo anything at this point
}
?>
或修改您的js以在searchCriteria
对象中发送数据,如下所示:
var searchCriteria = {
searchCriteria: {
import_bill: $('#import_bill').val(),
import_ramp: $('#import_ramp').val(),
import_delivery: $('#import_delivery').val(),
// few more form parameters
}};
答案 1 :(得分:1)
您没有设置&#34; searchCriteria&#34;变量
改变这个:
$('.searchSubmit').on('click', function()
{
var searchCriteria = {
import_bill: $('#import_bill').val(),
import_ramp: $('#import_ramp').val(),
import_delivery: $('#import_delivery').val(),
// few more form parameters
};
$.ajax({
url: 'api/railmbs.php', // process script
type: 'POST',
data: searchCriteria, // parameter group above
dataType: 'html' // had this set to json, but only got fail
success: function(data, textStatus, jqXHR)
{
console.log(data);
},
error: function(jqHHR, textStatus, errorThrown)
{
console.log('fail');
}
});
});
为:
$('.searchSubmit').on('click', function()
{
var data = {
searchCriteria: {
import_bill: $('#import_bill').val(),
import_ramp: $('#import_ramp').val(),
import_delivery: $('#import_delivery').val(),
// few more form parameters
}
};
$.ajax({
url: 'api/railmbs.php', // process script
type: 'POST',
data: data, // parameter group above
dataType: 'html' // had this set to json, but only got fail
success: function(data, textStatus, jqXHR)
{
console.log(data);
},
error: function(jqHHR, textStatus, errorThrown)
{
console.log('fail');
}
});
答案 2 :(得分:0)
您应该检查是否实际使用浏览器开发人员工具发送帖子数据,或者在PHP脚本的开头键入var_dump($_POST);
。
据我所知,你从未真正将searchCriteria
设为post变量。
目前,您的$_POST
变量应包含字段import_bill
,import_ramp
等。将您的if
语句或JavaScript对象更改为{searchCriteria: {/*Your data here*/}
。