我是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>';
}
非常感谢任何帮助。
答案 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”'