Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQueryAjax调用期间调试php_Javascript_Php_Jquery_Ajax_Datatables - Fatal编程技术网

Javascript 如何在jQueryAjax调用期间调试php

Javascript 如何在jQueryAjax调用期间调试php,javascript,php,jquery,ajax,datatables,Javascript,Php,Jquery,Ajax,Datatables,我有一个提交到php服务器的html表单。如果我使用提交按钮和action=screen\u custom.php以标准方式提交表单,那么它可以正常工作。我看到一个充满有效JSON数据的页面 但是如果我使用jqueryajax调用提交表单,那么将返回一个空的json数组。我相信php由于某种未知的原因无法找到表单值。无论如何,在ajax调用期间如何调试php?响应必须只包含填充jquery数据表所需的数据。如果我回显调试输出,那么datatable将无法填充 下面是一些成功地将表单提交到php并

我有一个提交到php服务器的html表单。如果我使用提交按钮和action=screen\u custom.php以标准方式提交表单,那么它可以正常工作。我看到一个充满有效JSON数据的页面

但是如果我使用jqueryajax调用提交表单,那么将返回一个空的json数组。我相信php由于某种未知的原因无法找到表单值。无论如何,在ajax调用期间如何调试php?响应必须只包含填充jquery数据表所需的数据。如果我回显调试输出,那么datatable将无法填充

下面是一些成功地将表单提交到php并返回良好json数据的代码

    <form id="criteriaForm" method="post" action="screen_custom.php"> 
    <table>
    <tr>
        <th>Filter By</th><th>Criteria</th><th title="Show this column">Show</th>
    </tr>
    <tr>
        <td><label title="Percentage increase">Appreciation Potential (%)</label></td>
        <td>
            <select name="upside">
                <option value="any">Any</option>
                <option value="gt0">> 0%</option>
                <option value="gt10">> 10%</option>
            </select>
        </td>
        <td><input type="checkbox" id="showUpside" name="showUpside" value="true">
    </tr>

    </table>
    <input type="submit" value="Run">
    </form>
以下是php中处理表单数据并返回json的部分:

$upside = $_POST["upside"];
$sql = "SELECT * FROM stocks " .$where;
//echo '<script>'
//echo 'sql=' .$sql .'<br>';
//echo 'console.log(' .$sql .')';
//echo '</script>';

$rs = mysql_query($sql);

//store result in an array
$results = array();
while($row = mysql_fetch_object($rs))
{
    $results[] = $row;
}
$data = json_encode($results);
echo '{"data":' .$data .'}';

//close the db connection
mysql_close($connection);

请注意,如果我取消注释最后一个echo之外的任何内容,那么datatable将不会填充。那么我如何调试这个呢?

您是否尝试在php脚本上使用isset$\u POST['value']方法?其中value是您将分配给submit按钮的名称。

我知道了如何调试它。在chrome调试器中,选择网络选项卡,然后从列表中选择screen_custom.php,然后选择响应选项卡。它显示了php的输出。我取消了echosql语句的注释,可以看到,实际上,表单参数没有被读取,正如我所怀疑的那样

然后我在谷歌上搜索该问题,发现解决方案是修改数据参数js,如下所示:

        data: function(d) {
            var form_data = $('#criteriaForm').serializeArray();
            $.each(form_data, function(key,val) {
                d[val.name] = val.value;
            });
        },

我不知道为什么第一个方法不起作用,因为我可以看到头中发送了正确的参数。但这是可行的。

可能是单独的,但回显“{data:”.$data.}”;只是为什么?您需要在返回时指定数据类型,因为您使用的是json编码。在成功函数:dataType:json之前添加ajax调用,从php端返回$data,比如:echo$data;我想出了如何调试它。在chrome调试器中,选择网络选项卡,然后从列表中选择screen_custom.php,然后选择响应选项卡。它显示了php的输出。我取消了echosql语句的注释,可以看到,实际上,表单参数没有被读取,正如我所怀疑的那样。但是为什么?@user3217883尝试在select-boxgood提示中为选项的值设置一个名称,我已经将这些行添加到PHP脚本ini_set'display_errors',1;ini设置“显示启动错误”,1;错误报告全部;然后,在您提示检查网络选项卡的情况下,我终于得到了PHP错误消息
$upside = $_POST["upside"];
$sql = "SELECT * FROM stocks " .$where;
//echo '<script>'
//echo 'sql=' .$sql .'<br>';
//echo 'console.log(' .$sql .')';
//echo '</script>';

$rs = mysql_query($sql);

//store result in an array
$results = array();
while($row = mysql_fetch_object($rs))
{
    $results[] = $row;
}
$data = json_encode($results);
echo '{"data":' .$data .'}';

//close the db connection
mysql_close($connection);
        data: function(d) {
            var form_data = $('#criteriaForm').serializeArray();
            $.each(form_data, function(key,val) {
                d[val.name] = val.value;
            });
        },