データを返す必要のある関数にデータを戻すときに問題が発生しました。以下のコード:Javascriptで元の呼び出し元関数にデータを返す方法はありますか?
function ioServer(request_data, callback)
{
$.ajax({
cache: false,
data: "request=" + request_data,
dataType: "json",
error: function(XMLHttpRequest, textStatus, errorThrown){},
success: function(response_data, textStatus){
callback(response_data);
},
timeout: 5000,
type: "POST",
url: "/portal/index.php/async"
});
}
function processRequest(command, item, properties)
{
var request = {};
request.command = command;
request.item = item;
request.properties = properties;
var toServer = JSON.stringify(request);
var id = ioServer(toServer, processResponse);
return id;
}
function processResponse(fromServer)
{
if (fromServer.response == 1)
{
return fromServer.id;
}
}
このコードを呼び出すには、別の関数内でprocessRequest関数を呼び出します。要求を送信し、応答を取得するだけでうまくいきます。しかし、私はresponseからprocessRequest関数に値 'id'を返す必要があるので、その値を呼び出し側に返すことができます。私が続ける限り、processResponseの戻り値は$ .ajaxに戻りますが、さらにそれをprocessRequestに戻す必要があります。
BTW ifResponseのif文は、リクエストが許可されているかどうかを示すためにサーバ側のPHPスクリプトによって設定された値を指します(たとえば、ユーザがログインしていない場合はfromServer.responseは0になります)。 $ .ajaxオブジェクトの成功/エラールーチンとは何の関係もありません。
多くのご協力ありがとうございます。
@Jani:応答に感謝しますが、もう少し明確にすることはできますか? 「ID」が必要とされる機能は、次のコードを持っています
$(#tabs).tabs('add', '#tab-' + id, 'New tab');
私はprocessResponse機能でコードのこの部分を実行してみてくださいと言っていますか?それは私がやりたいことではないからです。これらの機能は、サーバー側の状態を維持するための万能のソリューションとなります。それで、私はこのコードをそこに置くことを避けました。
はい、より明示的な使用の説明に感謝します! –
そしてすばらしい解明のための投票... –