0

データを非同期に投稿する Jquery 関数があります

function post_data_async_globalEval(post_url, post_data, globaleval) {
$.ajax({
    type: 'POST',
    url: post_url,
    data: post_data,
    dataType: 'html',
    async: true,
    timeout: 20000, // in milliseconds ~ 20 secs
    success: function (result) {
        jQuery.globalEval(globaleval);
    }
});
}

そして私はそれをそのように呼んでいます

post_data_async_globalEval("../Internal/RTV_COM?vid=1578", "type=TM", "$('#postinnerhtml').html(result);");

私が望むのは、このJS関数を実行することだけです

$('#postinnerhtml').html(result);

レスポンスの html を、Ajax ポスト リクエストの success 関数から得られる結果変数に置き換えます。

しかし、コードを実行するとこのエラーが発生します

Uncaught ReferenceError: result is not defined

成功関数内に JS コードを追加することもできましたが、特定の JS コードを 1 つだけ使用するのではなく、操作が成功した後に実行する JS コードを解析したいだけです。

4

2 に答える 2

3

globaleval 引数として文字列を渡す代わりに、関数を渡すことができます。

function(result) {$('#postinnerhtml').html(result);}

そして ajax 呼び出しで:

success: globaleval

(ところで、この場合、引数名も変更したいかもしれません...)

[編集] ここで私の最初のコメントを伝えるために、jQuery.globalEval() の代わりにネイティブの eval() を使用することもできます。ただし、外部ソース (ここでは ajax 呼び出しの結果) からの入力を受け入れる場合、eval() は通常悪と見なされます。

于 2013-10-15T13:30:24.317 に答える
1

コンテンツを応答に置き換えたいだけの場合は、 $('#postinnerhtml').html(result);insideを移動しても安全です。次のようになります: http://jsbin.com/OGOgEnO/1/editsuccess: function (result) { }#postinnerhtml

于 2013-10-14T03:52:44.120 に答える