在ajax响应中传递JavaScript函数

时间:2012-07-13 13:45:55

标签: javascript ajax json callback

我正在尝试从AJAX提交的表单返回回调。用户提交表单,服务器处理并返回有效响应,即错误消息以及可执行操作的JavaScript函数。我正在使用Zepto.js根据浏览器返回jQuery。

我的ajax请求是:

$.ajax({
    success: function(data, status, xhr) {
        data.callback();
    },
    url: form.attr('action'),
    data: form.serialize(),
    dataType: 'json'
});

在服务器上,我想返回类似的内容:

// PHP code
?>
{
    return: false,
    error: 'Sorry, we couldn’t find an account with that username or password.',
    callback: function() {
        console.log('this is the callback');
    }
}
<?php
// more PHP code

当返回浏览器时,回调函数应该触发。我希望服务器返回回调,这样我就可以使用相同的JavaScript代码并让它响应服务器响应。

我是否需要将dataType更改为脚本?但是我认为这只是为了加载.js文件而不是代码块。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:1)

这里的普遍感觉是我正以错误的方式接近这一点。所以修改后的代码:

$.ajax({
    success: function(data, status, xhr) {
        var callback = data['callback'];
        callback();
    },
    url: form.attr('action'), // in this example it's badLogin
    data: form.serialize(),
    dataType: 'json'
});
// callback specified in PHP
badLogin: function() {
    console.log('bad login');
}

我的PHP

if (!$valid) {
?>
{
    "return": false,
    "error": "Sorry, we couldn’t find an account with that username or password.",
    "callback": "badLogin"
}
<?php
}

感谢您指出我正确的方向。

答案 1 :(得分:0)

如果您完全确定该字符串将始终正确且无法注入任何代码,则始终可以将代码作为字符串返回并使用eval()