代码之家  ›  专栏  ›  技术社区  ›  Aleksa Ristic

PHP未捕获Ajax请求

  •  0
  • Aleksa Ristic  · 技术社区  · 8 年前

    我有这样的要求:

    $(function(){
        $("#novaProfaktura").click(function(){
            $.ajax({
              type: "POST",
              url: "../Pages/Program.php",
              data: { action: "testing" },
              success: function()
              {
                  alert("Ajax done"); //Testing purpose
              }
            });
            location.reload();
        });
    });
    

    然后在我的身体里有这样的PHP:

    <div id="Content">
        <?php
        echo("Php running <br>");
        if($_SERVER['REQUEST_METHOD'] == 'POST')
        {
            echo("Post running <br>");
            if($_POST['action'] = "testing")
            {
                echo("Action running <br>");
            }
        }
    
        ?>
    </div>
    

    我从中得到的是 alert message 所以我假设Ajax设置正确,并且 Php running 但它没有通过 if($_SERVER['REQUEST_METHOD'] == 'POST'

    如您所见,jquery代码是在DIV CLICK上运行的。

    我做错什么了?

    编辑:我用过 function(data) 它似乎能用,但它不会只返回 echoed 数据,但整个页面有回声。我用过 document.write() 它重写了整个页面,但如何获得特定的回声值?

    2 回复  |  直到 8 年前
        1
  •  0
  •   Aleksa Ristic    8 年前

    对此的回答是:

    success: function()
    {
        alert("Ajax done"); //Testing purpose
    }
    

    使用此:

    success: function(data)
    {
        alert("Ajax done"); //Testing purpose
        document.getDocumentById('emptyDiv').innerHTML = data;
    }
    

    现在,作为数据,您从运行函数的文档中获取所有HTML文本,而不是 url: "../Pages/Program.php" 我用的是分开的文件 url: "../Php/Testing.php" 在那个文件里我有 只有这个代码:

    <?php
        echo("Testing");
    ?>
    
        2
  •  -1
  •   jpswade    8 年前
    $_POST['action'] = "testing"
    

    这是变量赋值

    $_POST['action'] == "testing"
    

    这是比较。你想要这个。

    $_POST['action'] === "testing"
    

    这更好,因为它也是类型匹配的,它必须是字符串。