2014-09-26 48 views
0

當我從jQuery使用ajax發佈到C#時,我遇到了無法解釋的行爲。

1)主頁面不是我在jQuery中請求的方法。

要解決這個問題,我只需在頁面加載中放入一個if,這樣如果特定項目在查詢字符串中,它將觸發一系列命令。它確實打擊瞭如果聲明並且完美地運行代碼。有一些方法可以在地圖上改變顏色。這些從來沒有發生過。我可以設置一個標籤,它會通過它,但標籤仍然未設置。

2)奇怪的是......我的頁面有一個刷新它的計時器。它刷新頁面,現在處理更改。

這裏是我打電話給我的方法在jQuery的方式:

function mycmethod(param) 
    { 
     //alert(precinct); 
     $.ajax({ 
      url: "myPage.aspx/someMethod", 
      type: 'POST', 
      data: "params=" + param, 
      success: function iGotData(responseJSON) { 

      // alert("Worked"); 

      }, 
      error: function (xhr, status, errorThrown) { 
       console.log("Error: " + errorThrown); 
       console.log("Status: " + status); 
       console.log(xhr); 
       alert("Didnt work:" + errorThrown); 

      }, 

      }) 
     }; 

它最初設置爲異步:真但這並不有所作爲。

方法,它不是在加載調用是:

[WebMethod][ScriptMethod] 
public Boolean someMethod(string param) 
{ 

    setFeatures(); 
    GenerateMap(); 

    return true; 
} 

我懷疑它的相關性,但我打電話超過鼠標懸停在某個特定元素的jQuery的電話。 jquery調用一個調用返回一些jSON的asmx web服務的函數。我在返回JSON後調用mycmethod

爲什麼我的UI元素沒有響應,直到頁面刷新。如果沒有,有沒有辦法像定時器那樣強制刷新?

+2

不是關於答案:從不使用'async:false'。這很糟糕,不推薦使用。 – Regent 2014-09-26 20:46:08

+0

我知道...只是想嘗試任何東西:( – logixologist 2014-09-26 20:46:53

回答

3

[WebMethods]方法應聲明爲靜態。

我還發現,你可能需要在你的Ajax調用指定的內容類型:

contentType: "application/json; charset=utf-8" 

而且,你的數據選項看起來很可疑。也許你應該把它添加到URL選項:

url: "myPage.aspx/someMethod?params" + parm 

,或者更理想的是,把它作爲任何一個JSON對象或JSON字符串:

data: { 
    params: param 
} 

data: JSON.stringify({ 
    params: param 
}) 
+0

好點,但即使設置爲靜態,它永遠不會被調用 – logixologist 2014-09-26 20:53:46

+0

現在讀取'公共靜態布爾值' – logixologist 2014-09-26 20:54:29

+0

@logixologist,好的,請發佈一些標記供我們看。 – Tuan 2014-09-26 20:56:28

2

如果我正確理解你,你正在加載頁面,然後通過ajax調用服務器,並期望服務器更改當前加載的頁面的UI元素。

不幸的是,它不這樣工作。一旦你提供了頁面,服務器本身就不能在沒有進行刷新/回發(或者沿着這些行)的情況下操作那個頁面。

如果您想更新UI而不進行刷新/回發,您可以讓WebMethod返回HTML,並且您的jQuery success方法可以更新相關控件。

或者,您可以使用jQuery的.get()通過ajax檢索頁面的新副本,並像那樣更新當前頁面。(儘管效率較低)

+0

這不是關於再次更新頁面。我真的需要觸發一些C#方法。我如何強制頁面回傳。 – logixologist 2014-09-26 21:00:37

+0

所以你說'someMethod'永遠不會被調用?如果你看看你的瀏覽器調試工具,是否有Ajax請求發生? – Snuffleupagus 2014-09-26 21:01:47

+0

是的......它很奇怪。 'myPage.aspx'正在加載,但不會進入'someMethod'。我使用'Charles'驗證了這個調用是否成功執行,並且如果我停止了他們,它會在PageLoad上產生斷點。 – logixologist 2014-09-26 21:03:54