AJAX POST组forms变量为PHP
我试图将一组表单参数发送到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:
不确定我做错了什么。 如果我在上面的IF
之前echo
hello
,控制台将相应地输出。 但我似乎无法从IF
内部得到任何echo
。
有人看到我的错误吗?
您没有设置“searchCriteria”变量。
改变这个:
$('.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'); } });
首先。 为什么不使用$("form").serialize()
? 它会更清洁。 其次,您在根对象中传输数据,因此为了获取值,请检查$_POST
数组。 而不是$value = $_POST['searchCriteria']
使用$value = $_POST;
。 这个PHP代码应该工作:
或者修改你的js以在searchCriteria
对象中发送数据,如下所示:
var searchCriteria = { searchCriteria: { import_bill: $('#import_bill').val(), import_ramp: $('#import_ramp').val(), import_delivery: $('#import_delivery').val(), // few more form parameters }};
您应该检查是否实际使用浏览器开发人员工具发送post数据或输入var_dump($_POST);
在PHP脚本的开头。
据我所知,你实际上从未将searchCriteria
设置为post变量。
目前,您的$_POST
变量应包含字段import_bill
, import_ramp
等。 将if
语句或JavaScript对象更改为{searchCriteria: {/*Your data here*/}
。