-1

我正在尝试从 ajax 调用的 php 页面执行 jquery 代码。

更改 div.error 的 html

这是代码(如果有更简单的方法,只需告诉/发布):-no $.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>

测试.php

<script type='text/javascript'>
$('#error').html('working');
</script>
4

3 回答 3

3

您正在使用的test变量似乎没有在任何地方声明。先尝试硬编码。此外,{key:value}语法是首选的,因为它确保在发送到服务器时正确地对值进行 url 编码:

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');
        }
    });
});

此外,如果您希望 javascript 在您的 php 脚本中执行,请删除<script>标签:

$('#error').html('working');

并在您的调用中指定dataType参数:script$.ajax

dataType: 'script'

另一种可能性是让您的test.php脚本简单地返回值:

working

然后在成功回调中刷新 DOM:

success: function(data) {
    $('#error').html(data);
},
于 2012-08-07T16:47:52.777 回答
2

内部的 JavaScripttest.php不会运行,因为你从来没有告诉过它。它不仅会运行,因为您加载了它。它需要在 DOM 中才能运行。

试试这个:

$.ajax({
    url: "test.php",
    type: "POST",
    data: "test="+ test,
    success: function(data){
        $(data).filter('script').appendTo('head');
    },
    error: function() {
        alert('error');
    }
});
于 2012-08-07T16:51:59.290 回答
0

您的 test.php 脚本应该输出您想要显示的内容。

它应该看起来像:

echo "<html>";
echo "<div>working</div>";
echo "</html>";

以便它返回一些东西。现在,您只返回 javascript。

于 2012-08-07T16:50:17.003 回答