在$ .ajax帖子上没有设置$ _POST值

时间:2017-04-04 05:39:46

标签: javascript php jquery ajax jquery-events

我是PHP和javascript的新手,我遇到了一个需要在读入的xml文档中编辑值的问题。我有一个由PHP动态创建的HTML Select码。

function outputTableRow() {
echo "<tr>";
    echo "<td>";
        echo "<select onchange=\"ValueChange(this);\">";
            echo "<option value=\"not value\" selected >No selection</option>";
            echo "<option value=\"A\" >A</option>";
            echo "<option value=\"B\" >B</option>";
            echo "<option value=\"C\" >C</option>";
            echo "<option value=\"D\" >D</option>";
        echo "</select>";
    echo "</td>";
echo "</tr>";
}

select的onchange事件然后调用一个javascript函数(据我所知),对同一个php文档的_POST执行ajax请求。

function ValueChange(obj)
{
    var value = obj.value;

    $.ajax({
    type: "POST",
    url: "functions.php",
    data: "callFunction=UpdateValue"
    });
}

从那里我尝试检查_POST中ajax请求设置的值以调用相应的函数。

if(isset($_POST['callFunction'])){
    if($_POST['callFunction'] == 'UpdateValue'){
       UpdateValue();
    }
}

最后,在我尝试访问的功能中,我试图在达到该代码时编写控制台日志,但它永远不会出现。实际上,_POST始终为空。

function UpdateValue()
{
   echo '<script>console.log("VALUE CHANGE")</script>';
}

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

首先,heredoc是你应该输出HTML块的方法:

<?php
function outputTableRow() {
    echo <<< HTML
<tr>
    <td>
        <select onchange="ValueChange(this);">
            <option value="not value" selected >No selection</option>
            <option value="A">A</option>
            <option value="B">B</option>
            <option value="C">C</option>
            <option value="D">D</option>
        </select>
    </td>
</tr>
HTML;
}

然后,您需要在Ajax函数中添加success callback

function ValueChange(obj)
{
    var value = obj.value;

    $.ajax({
        type: "POST",
        url: "functions.php",
        data: "callFunction=UpdateValue",
        success: function(data) {$(body).append(data);}
    });
}

实际上你也应该使用jQuery绑定事件而不是使用onchange属性。假设您给出了选择id="changer",它看起来像这样:

$("select#changer").on("change", function() {ValueChange(this);});

答案 1 :(得分:-1)


  可以认为Ajax调用中的URL很糟糕,它必须包含类似的服务器,您可以尝试使用'URL:“http://localhost/functions.php”'