2

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 を script に変更する必要がありますか? ただし、これはコードのブロックではなく、.js ファイルをロードするためのものだと思いました。

どんな助けでも感謝します。

4

2 に答える 2

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
}

私を正しい方向に向けてくれてありがとう。

于 2012-07-13T14:57:12.473 に答える
0

コードを常に文字列として返すことができeval()、文字列が常に正しく、コードを挿入できないことが絶対に確実な場合に使用できます。

于 2012-07-13T13:50:00.110 に答える