0

jquery関数内にあるajax呼び出しから値を返すことを探しています。私はこのコードを持っていますが、それはを返しますundefined。私が間違っていることについてのどんな助けも大いに感謝されます。

$.inlDo = function(action,rec,val) {
    $.ajax({
        type: 'POST', url: 'editFile.php?do='+action+'&record='+rec+'&val='+val,
        success: function(d) {
            return 'ok';
        }
    });
}

alert($.inlDo('del',id,''));

ajax呼び出しは成功するので、問題になる可能性はほとんどありません。

4

3 に答える 3

2

ajax 呼び出しを使用して値を返すことはできません

$.inlDo = function(action,rec,val) {
    $.ajax({
        type: 'POST', url: 'editFile.php?do='+action+'&record='+rec+'&val='+val,
        success: function(d) {
          alert(d);
       //i will suggest you to add a function call back
         compltedRequest(d);
        }
    });
}

function completdRequest(data)
 {
  alert("request has been completed");
 }
于 2012-10-12T16:59:53.127 に答える
1

このようにしてみてください:

$.inlDo = function(action,rec,val) {
    return $.ajax({
        async: false,
        type: 'POST', url: 'editFile.php?do='+action+'&record='+rec+'&val='+val,
        success: function(d) {
            return 'ok';
        }
    }).responseText;
}

XML または JSON 応答を受信して​​いる場合は、何らかの XML パーサーを使用するか、JSON 応答に JSONIFY を使用して、オブジェクトとして応答にアクセスできるようにする必要があります。

于 2012-10-12T17:00:18.553 に答える
0

問題は、これが非同期呼び出しであることです。alertの結果を表示しようとし$.inlDoていますが、コールバックとして指定した関数が返されません。

$.inlDo関数はブロックせずに戻ります。つまり、ajax 呼び出しが完了するのを待たずに実行を続けます。ajax 呼び出しは、返された後 (しばらくしてからでも) 完了でき$.inlDoます。

次にsuccess、サーバーからデータが返されると (つまり、ajax 呼び出しが完了すると)、コールバックが実行されます。このコールバックでは、結果を処理する必要があります。この関数は、alert(@Zlatan が示唆するように) Web ページを更新したり、更新したりする必要がある関数です。

呼び出しをブロックする場合、つまり応答が返されるまで待機する場合は、構成を使用しasync: falseます。同期 (ブロッキング) 呼び出しを使用できる場合には、いくつかの制限があります。

詳細: http://api.jquery.com/jQuery.ajax/

于 2012-10-12T17:12:47.757 に答える