$_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绑定事件,而不要同时使用
1 | $("select#changer").on("change", function() {ValueChange(this);}); |
Ajax调用中的URL很可能是错误的,它必须包含服务器或类似的东西,您可以尝试使用'URL:" http://localhost/functions.php "'