我正在尝试从ajax调用的php页面执行jquery代码。
更改div.error的html
这是代码(如果有更简单的方式告诉/发布): - 没有$ .load
HTML / jQuery:jquery.js已经链接
<input type='text' id='test'>
<div id='error' style='display:inline-block;'>CHANGE HERE</div><bR>
<input type='submit' value='run' id='button'>
<script type='text/javascript'>
$('#button').click(function(){
$.ajax({
url: "test.php",
type: "POST",
data: "test="+ test,
success: function(jqXHR){
},
error: function() {
alert('error');
}
});
});
</script>
test.php的
<script type='text/javascript'>
$('#error').html('working');
</script>
答案 0 :(得分:3)
您正在使用的test
变量似乎没有在任何地方声明。首先尝试硬编码。此外,{key:value}
语法是首选,因为它确保在发送到服务器时正确地对值进行编码:
data: { test: 'some value' }
如果您想使用变量,请确保已声明:
$('#button').click(function() {
var test = 'foo bar';
$.ajax({
url: 'test.php',
type: 'POST',
data: { test: test },
success: function(data) {
},
error: function() {
alert('error');
}
});
});
此外,如果您希望在PHP脚本中执行javascript,请删除<script>
标记:
$('#error').html('working');
并在dataType
来电中为script
指定$.ajax
参数:
dataType: 'script'
另一种可能性是让您的test.php
脚本只返回值:
working
然后在成功回调内部刷新DOM:
success: function(data) {
$('#error').html(data);
},
答案 1 :(得分:2)
来自test.php
内部的JavaScript无法运行,因为您从未告诉它。这不仅仅是因为你装了它而会跑。它需要在DOM中运行。
试试这个:
$.ajax({
url: "test.php",
type: "POST",
data: "test="+ test,
success: function(data){
$(data).filter('script').appendTo('head');
},
error: function() {
alert('error');
}
});
答案 2 :(得分:0)
您的test.php脚本应输出您想要显示的内容。
它应该看起来像:echo "<html>";
echo "<div>working</div>";
echo "</html>";
以便它返回一些东西。现在,你只返回javascript。