2010-03-08 153 views
5

我试图找到一种方法来延迟发生在我进行服务调用后发生的所有代码。这种延迟的原因是我的服务返回的代码需要下列函数,我传递的结果是这些函数未定义。Jquery延迟函数调用

我已经尝试将setTimeout()附加到服务调用后直接调用的函数,但它只是跳过函数我设置超时并跳转到下一个函数...我的web方法,我我打电话是没有那么大,并且没有做任何过于密集

public bool GetSpreadsheetStatusForAdmin(string cacId) 
    { 
     SpreadSheetStatus result = new SpreadSheetStatus(); 
     List<Data.Spreadsheet> spreadsheets = SpreadsheetManager.GetUserSpreadsheets(GetCurrent.Identity); 
     if (spreadsheets.Count != 0) 
     { 
      foreach (Data.Spreadsheet spreadsheet in spreadsheets) 
      { 
       if (spreadsheet.Status == SpreadsheetStatus.Pending) 
       { 
        return true; 
       } 
      } 
     } 
     return false; 
    } 

我已经找到了延迟(),并认为可能的工作,但我没有jQuery的1.4,不能把它作为尚未。

有什么可以帮助..?

+1

不清楚问题是什么。你显示的代码不是JavaScript,呃?我想这是一个服务器端的方法,这是通过json调用?但你在问如何延迟浏览器。所以你显示的代码可能是不相关的,对吧?你能否在实际的浏览器端代码中显示你想要延迟的地方? – Cheeso

+0

我无法得到代码在窗体中正确发布..所以我希望你能把它弄出来.. – Avien

回答

0

嗯..我永远不会得到延迟的功能,我不能使用onCallback来调用我想延迟的功能。所以我最终设置了我在加载页面时想要获得的值。我正在设置行的值,而不是我想要做的,但它的工作原理。我的页面加载做第二过慢的一小部分..

3

将该函数作为服务调用的回调调用。你打电话给你的服务怎么样?

+0

可以工作...我会尝试 – Avien

0

这里是一些代码..

的GetCheckedOutFieldingsForUser是服务呼叫我指的是在我的岗位。下面的两个EditUser功能我想推迟..如果我把它跳到EditUserLoaded上setTimeout('$popup.load("Forms/EditUserForm.htm #EditUserForm", null, function() { EditUserLoaded(cacId, onSaveCallback); });', 1000);的延迟,这犯规给出正确的结果

function EditUser(id, onSaveCallback) { $("#EditUserPopup").remove(); var $popup = $("<div id='EditUserPopup'></div>"); $("body").append($popup); $popup.load("Forms/EditUserForm.htm #EditUserForm", null, function() { EditUserLoaded(cacId, onSaveCallback); }); }

function EditUserLoaded(id, onSaveCallback) 

{$ 功能(“#EditUserCancelButton”)。click(function(){ShotdownEditUserForm()});

alert(isCheckedOut + "EditUserLoaded"); 
CallMfttService("ServiceLayer/UserManager.asmx/GetUser", "{id:'" + id + "'}", function(result) 
{ 
    if (!userIsAdmin) 
    { 
     $("#EditUserForm input").attr("disabled", "disabled"); 
     $("#EditUserForm select").attr("disabled", "disabled"); 
     $('#EditUserFormHeader').text("View User"); 
     $("#EditUserCancelButton").text("Close"); 
     $("#EditUserSaveButton").hide(); 
    } 
    else 
    { 
     if (isCheckedOut == "True") 
     { 
      $("#EditUserOrganization").attr("disabled", "disabled"); 
     } 

     $("#EditUserSaveButton").click(function() { SaveUser(id, onSaveCallback); }).removeAttr("disabled"); 
    } 
+0

我不能告诉你想要什么做。请编辑您的原始问题,删除任何不相关的内容并正确设置代码格式。 –

0

重读我原来的职位后,我看到它看起来就像地狱混乱... 我落得这样做;创建第二个方法getUserRecords获得'标志',我从我的第一个getUser方法调用getUserRecords,并返回一个新对象类型,并在新对象中包含该标志。