关于javascript:$ _ POST值未在$ .ajax帖子上设置

$_POST value not getting set on $.ajax post

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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请求。

1
2
3
4
5
6
7
8
9
10
function ValueChange(obj)
{
    var value = obj.value;

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

从那里,我尝试检查_POST中的ajax请求所设置的值,以调用适当的函数。

1
2
3
4
5
if(isset($_POST['callFunction'])){
    if($_POST['callFunction'] == 'UpdateValue'){
       UpdateValue();
    }
}

最后,在我尝试获得的功能中,我试图在到达该代码但从未获得该代码时编写控制台日志。实际上,_POST始终为空。

1
2
3
4
function UpdateValue()
{
   echo 'console.log("VALUE CHANGE")';
}

非常感谢您的帮助。


首先,heredoc是您应如何输出HTML块的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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函数添加成功回调:

1
2
3
4
5
6
7
8
9
10
11
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",它看起来像这样:

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

Ajax调用中的URL很可能是错误的,它必须包含服务器或类似的东西,您可以尝试使用'URL:" http://localhost/functions.php "'