1

メソッド名とデータをパラメーターとして使用して、Asp.Net Web サービス呼び出しを行う関数があります。サービスへのデータ送信に問題はありません。しかし、私の戻り値はundefined

function ServiceCommand(method, mdata) {
            $.ajax({
                url: "Service1.asmx/" + method,
                type: "POST",
                dataType: "json",
                data: mdata,
                contentType: "application/json; charset=utf-8",
                success: function (msg) {
                    return msg;
                },
                error: function (e) {
                    return "error";
                }
            });
        }

function Insert()
{
var Msg = ServiceCommand("HelloWorld", "{pwd:'1234',txt:'SomeText'}");
alert(Msg);// undefined

}

応答が来るまでServiceCommand関数を待機させるにはどうすればよいですか? 私は JQuery 1.9 を使用しています (async:false動作しません) の使用法をアドバイスするソリューションを見ました$.Whenが、ここでの使用方法がわかりませんでした。

4

2 に答える 2

2

プロミス (.when) を使用せずにこれを行う簡単な方法は、3 番目のパラメーターとしてコールバック関数を ServiceCommand に渡すことです。この関数は、ajax 呼び出しからの応答に対して必要なことは何でも実行します。

function ServiceCommand(method, mdata, onSuccessCallback) {
        $.ajax({
            url: "Service1.asmx/" + method,
            type: "POST",
            dataType: "json",
            data: mdata,
            contentType: "application/json; charset=utf-8",
            success: function (msg) {
                if (onSuccessCallback !== undefined) {
                    onSuccessCallback(msg);
                }
            },
            error: function (e) {
                return "error";
            }
        });
    }

function Insert()
{
    var Msg = ServiceCommand("HelloWorld", "{pwd:'1234',txt:'SomeText'}", onSuccess);
    alert(Msg);
}
function onSuccess(msg)
{
    alert(msg);
}
于 2013-04-22T19:06:54.310 に答える
1

async=false を使用します。

$.ajax({
   url: myUrl,
   dataType: 'json',
   async: false
于 2013-04-22T18:59:46.440 に答える