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_billimport_ramp等。 将if语句或JavaScript对象更改为{searchCriteria: {/*Your data here*/}