【问题标题】:Getting data from jQuery ajax从 jQuery ajax 获取数据
【发布时间】:2015-11-11 02:04:14
【问题描述】:

我正在尝试为汽车列表制作 AJAX 过滤器,但我陷入了最后阶段。我有两个文件,index.php 和 filter.php。

在 index.php 我有带有下拉列表和滑块的表单。发送表单的代码如下:

$(document).ready(function(){
        $("#send").click(function(){

            var salon=$("#salon-list").val();
            var make=$("#make-list").val();
            var model=$("#model-list").val();
            var cenaLow=$("#cenaLow").val();
            var cenaHigh=$("#cenaHigh").val();
            var tachometrLow=$("#tachometrLow").val();
            var tachometrHigh=$("#tachometrHigh").val();
            var palivo=$("#palivo-list").val();
            var karoserie=$("#karoserie-list").val();
            var prevodovka=$("#prevodovka-list").val();
            var pohon=$("#pohon-list").val();
            var barva=$("#barva-list").val();
            var dvere=$("#dvere-list").val();
            var objem=$("#objem-list").val();
            var stav=$("#stav-list").val();


            $.ajax({
                type:"post",
                url:"filter.php",
                data:"salon="+salon+"&make="+make+"&model="+model+"&cenaLow="+cenaLow+"&cenaHigh="+cenaHigh
                +"&tachometrLow="+tachometrLow+"&tachometrHigh="+tachometrHigh+"&palivo="+palivo+"&karoserie" +
                "="+karoserie+"&prevodovka="+prevodovka+"&pohon="+pohon+"&barva="+barva+"&dveře="+dvere+"&objem" +
                "="+objem+"&stav="+stav,
                success:function(data){
                    $("#result").html(data);
                }

            });

        });
    });

在 filter.php 文件中,我从 $_POST 获取数据,然后搜索数据库。之后,我想将结果回显到#result div,但它不起作用。任何 echo 语句都不起作用,我要列出的变量不为空,我检查了。

echo 'iAmHere'; /*just checking*/

$post["salon"] = htmlspecialchars($_POST["salon"]);
$post["make"] = htmlspecialchars($_POST["make"]);
$post["model"] = htmlspecialchars($_POST["model"]);
$post["cenaLow"] = htmlspecialchars($_POST["cenaLow"]);
$post["cenaHigh"] = htmlspecialchars($_POST["cenaHigh"]);
$post["rokLow"] = htmlspecialchars($_POST["rokLow"]);
$post["rokHigh"] = htmlspecialchars($_POST["rokHigh"]);
$post["tachometrLow"] = htmlspecialchars($_POST["tachometrLow"]);
$post["tachometrHigh"] = htmlspecialchars($_POST["tachometrHigh"]);
$post["palivo"] = htmlspecialchars($_POST["palivo"]);
$post["karoserie"] = htmlspecialchars($_POST["karoserie"]);
$post["prevodovka"] = htmlspecialchars($_POST["prevodovka"]);
$post["pohon"] = htmlspecialchars($_POST["pohon"]);
$post["barva"] = htmlspecialchars($_POST["barva"]);
$post["dvere"] = htmlspecialchars($_POST["dvere"]);
$post["objem"] = htmlspecialchars($_POST["objem"]);
$post["stav"] = htmlspecialchars($_POST["stav"]);

echo '<p class="make">'.$post["make"].'</p>'; /*does not work*/


echo "<script>window.alert('".$_POST["make"]."');</script>";  /*another checking, this works*/

感谢您的帮助。

【问题讨论】:

  • 控制台有错误吗?
  • 请包含您用于响应 AJAX 调用服务器端的代码。
  • print_r($_POST) 的输出是什么?
  • 控制台没有错误。 print_r($_POST) 的输出是: Array ( [salon] => 0 [make] => 149 [model] => [cenaLow] => 50000 [cenaHigh] => 300000 [rokLow] => 1998 [rokHigh] = > 2009 [tachometrLow] => 40000 [tachometrHigh] => 210000 [palivo] => [karoserie] => [prevodovka] => [pohon] => [barva] => [dvere] => [objem] => [ stav] => [send] => Odeslat )(它也没有列出 print_r,我不得不将它用作表单操作来获取它)
  • 能否请您将error 回调添加到您的$.ajax 以检查ajax 请求期间是否出现任何错误? error : function() { console.log('ajax request failed!'); }

标签: javascript php jquery ajax


【解决方案1】:

来自here:

作为 DOM 文本插入的 JavaScript 将不会执行。

this 说:

您必须使用eval() 来执行您已编写的任何脚本代码 作为 DOM 文本插入。

因此您可以尝试另一种方法来测试您的代码(尽管我没有测试过)。

在 filter.php 中:

<?php
$post["salon"] = htmlspecialchars($_POST["salon"]);
$post["make"] = htmlspecialchars($_POST["make"]);
$post["model"] = htmlspecialchars($_POST["model"]);
$post["cenaLow"] = htmlspecialchars($_POST["cenaLow"]);
$post["cenaHigh"] = htmlspecialchars($_POST["cenaHigh"]);
$post["rokLow"] = htmlspecialchars($_POST["rokLow"]);
$post["rokHigh"] = htmlspecialchars($_POST["rokHigh"]);
$post["tachometrLow"] = htmlspecialchars($_POST["tachometrLow"]);
$post["tachometrHigh"] = htmlspecialchars($_POST["tachometrHigh"]);
$post["palivo"] = htmlspecialchars($_POST["palivo"]);
$post["karoserie"] = htmlspecialchars($_POST["karoserie"]);
$post["prevodovka"] = htmlspecialchars($_POST["prevodovka"]);
$post["pohon"] = htmlspecialchars($_POST["pohon"]);
$post["barva"] = htmlspecialchars($_POST["barva"]);
$post["dvere"] = htmlspecialchars($_POST["dvere"]);
$post["objem"] = htmlspecialchars($_POST["objem"]);
$post["stav"] = htmlspecialchars($_POST["stav"]);

echo $post["make"];

在 index.php 中:

$.ajax({
    ...
    success:function(res){
       $("#result").html(res);
       alert(res);
    }
});

【讨论】:

    【解决方案2】:

    试试这个:

    $(document).ready(function(){
            $("#send").click(function(){
     var salon=$("#salon-list").val();
                var make=$("#make-list").val();
                var model=$("#model-list").val();
                var cenaLow=$("#cenaLow").val();
                var cenaHigh=$("#cenaHigh").val();
                var tachometrLow=$("#tachometrLow").val();
                var tachometrHigh=$("#tachometrHigh").val();
                var palivo=$("#palivo-list").val();
                var karoserie=$("#karoserie-list").val();
                var prevodovka=$("#prevodovka-list").val();
                var pohon=$("#pohon-list").val();
                var barva=$("#barva-list").val();
                var dvere=$("#dvere-list").val();
                var objem=$("#objem-list").val();
                var stav=$("#stav-list").val();
    
     var data= {
                make: make,
                model: model,
                cenaLow: cenaLow,
                cenaHigh: cenaHigh,
                tachometrLow: tachometrLow,
                tachometrHigh: tachometrHigh,
                palivo: palivo,
                karoserie: karoserie,
                prevodovka: prevodovka,
                pohon: pohon,
                barva: barva,
                objem: objem,
                stav : stav
            };
    
    
                $.ajax({
                    type:"post",
                    url:"filter.php",
                    data:data,
                    success:function(data){
                        $("#result").html(data);
                    }
    
                });
    
            });
        });
    

    【讨论】:

      【解决方案3】:

      试试这个:

      die('<p class="make">'.$post["make"].'</p>');
      

      或

      echo '<p class="make">'.$post["make"].'</p>';exit;
      

      而不是

      echo '<p class="make">'.$post["make"].'</p>'; /*does not work*/
      
      
      echo "<script>window.alert('".$_POST["make"]."');</script>";  /*another checking, this works*/
      

      没有出口就无法工作。我不知道为什么,但它应该可以解决问题。此外,您的代码还有很大的改进空间。继续寻找更好的方法来提高你的技能!!尽情享受吧!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-20
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多