0

私は現在、次のコードを持っています:

function Parse_Error(ErrMsg) {

$.post("ajax/errormsg.php", {
    errmsg: ErrMsg} 
    , function(data) {
    alert (data);
                return (data);
});
}

アラートには正しいメッセージが表示されますが、関数はメッセージを返しません。関数は「未定義」を返し続けましたが、アラートは完全に機能しています。私は以下を追加しようとしました:

var tmp = data;
return tmp;

成功せずに..どこで間違ったのですか?

4

1 に答える 1

0

問題は、Parse_Error 関数に対して return ステートメントが返されないことです。これは、JQuery にデータを渡す宣言 ( ) と呼ばれる無名関数に対して返されますがfunction(data){...}、これは事実上無視されます。代わりに、次のようにする必要があります。

// your code that does the query
do_error_query('The Error Message');

function do_error_query(ErrMsg) {
    $.post("ajax/errormsg.php", {errmsg: ErrMsg} , function(data){

        alert(data);
        // here you need to call a function of yours that receives the data.
        // executing a return statement will return data to jquery, not to the calling
        // code of do_error_query().
        your_function(data);

    });
}

function your_function(data){
    // process the data here
}

do_error_query()問題は、PHP ページからの結果が返される前に呼び出しが完了することです。したがって、結果が返される可能性はありません。つまり、リターンyour_function(data)後によく呼び出されdo_error_query()ます。それが理にかなっていることを願っています。

実質的にdo_error_query()は、イベント ハンドラーをセットアップするだけです。イベントがまだ完了していないため、値を返すことができません。それがイベントハンドラのyour_function(data)目的です。イベントを処理し、PHP ページからデータを返します。イベントはまだ完了していませんが、do_error_query()長い間終了する予定です。

于 2013-02-27T02:18:27.373 に答える