【问题标题】:Post to PHP with Ajax and read Results使用 Ajax 发布到 PHP 并阅读结果
【发布时间】:2013-08-27 21:20:17
【问题描述】:

我已经阅读了这个网站上的几十个类似问题,并且在试图理解我的代码有什么问题时遇到了很多麻烦。我正在尝试根据另一个选择框的值动态更新选择框,但由于某种原因,一旦我使用 Ajax 发布到 PHP,似乎无法获取任何类型的响应数据。

JAVASCRIPT:

function toggleHiddenDIV()
{
    var dc = document.getElementById("datacenter");
    var dcVal = dc.options[dc.selectedIndex].value;

    // Check if Datacenter selection has no Value selected
    if(dcVal != '')
    {
        document.getElementById("hidden-options").style.display="block";

        $.ajax({
            type: "POST",
            url: "handler.php",
            data: { 'action_type': 'update_inventory_fields', id: dcVal },
            success: function(response)
            {
                alert(response);
            }
        });
    }
    else
    {
        document.getElementById("hidden-options").style.display="none";
    }
};
</script>

PHP:

if ($_POST['action_type'] == "update_inventory_fields")
{
    if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
        if (empty($_POST["id"])) { return; }
    }

    $result = mysql_query("SELECT id, ip, block FROM ipv4 WHERE datacenter = " . $_POST["id"]);

    $data = array();
    while($row = mysql_fetch_array($result, true))
    {
        $data[] = $row;
    };

    return json_encode($data);
}

【问题讨论】:

  • 在 PHP 中尝试使用 echo 而不是 return。 (现在我猜是因为我看到的不仅仅是您发布的代码)
  • 你试过了吗 - json_decode(file_get_contents('php://input'));
  • 你搞定了吗?

标签: php javascript jquery ajax post


【解决方案1】:

不要调用return(因为你没有返回函数);只需echo 然后将内容放到页面上:

echo json_encode($data);

【讨论】:

    【解决方案2】:

    改成这个...不需要return,只需echo,因为你在函数调用之外

    if ($_POST['action_type'] == "update_inventory_fields")
    {
    if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
        if (empty($_POST["id"])) { return; }
    }
    
    $result = mysql_query("SELECT id, ip, block FROM ipv4 WHERE datacenter = " . $_POST["id"]);
    
    $data = array();
    while($row = mysql_fetch_array($result, true))
    {
        $data[] = $row;
    };
    
    echo json_encode($data);
    }
    

    【讨论】:

      【解决方案3】:

      如果您发布的 php 代码位于函数内部,则您需要使用 echo functionname()

      如果php代码不在函数中,则使用echo json_encode($data);

      【讨论】:

        猜你喜欢
        • 2013-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 2015-07-07
        • 2010-10-17
        相关资源
        最近更新 更多