-1

我有一个名为 searchReportButton 的按钮。单击此按钮时,我需要使用 ajax Web 方法“Error.aspx/CheckSessionExpiry”从服务器检查会话值。这是在 checkSession javascript 函数中完成的。checkSession 现在没有返回任何东西——而是根据结果处理所需的操作(重定向到错误页面)。

  1. 我需要将 ajax web 方法的结果返回给 Main Caller。我们怎样才能做到这一点?
  2. 我是否需要将剩余的代码(来自主调用者)移动到成功回调中?

主要来电者

searchReportButton.click(function () {

    checkSession();
    //Remainging Code

});

帮手

function checkSession() {

var win = 101;
$.ajax(
        {
            type: "POST",
            url: "Error.aspx/CheckSessionExpiry",
            data: '{"winNumber": "' + win + '"}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: handleSessionResult

        }
        );
        }

结果助手

  function handleSessionResult(result) {


    if (result.hasOwnProperty("d")) 
    {
      result = result.d
    }

    if (result == "ACTIVE") 
    {
      window.location.href("Error.aspx");
      return false;
    }

   //alert(result);

}

参考:

  1. 如何让 jQuery 执行同步而不是异步的 Ajax 请求?
  2. $.ajax 上下文选项
  3. jQuery Ajax 回调没有获取上下文
  4. jQuery将更多参数传递给回调
4

1 回答 1

2

你不能。或者,更具体地说,您不应该这样做。Ajax 请求async意味着它在进行时不会阻止其他 JS 操作(想象一下,如果服务器响应缓慢,浏览器会冻结 5 秒?)。

相反,您可以传递一个success回调,您已经这样做了。然后在那里做任何你想做的事情。

所以而不是:

checkSession();
//Remainging Code

您应该在回调中移动剩余的代码:

function handleSessionResult(result) {
    //... current code
    //Remaining code from the above
}
于 2012-12-02T10:43:16.953 回答