2016-07-28 102 views
0

我新的AJAX和我不是太清楚如何使用AJAX的格式調用 前在JavaScript中的AJAX調用服務器端函數?

$.ajax({ 
    type: "POST", 
    url: "Default.aspx/function", 
    data: '{ searchBy: id }', 
    contentType: "application/json; charset=utf-8" 
}).success(function (result) { 
    alert(result); 
}) 

我在.cs文件中的函數,應該在一個字符串ID和返回包含該ID的所有對象的列表。
我想在JavaScript中調用這個函數來檢查在將新對象插入數據庫之前返回的列表是否爲空(因此該ID尚不存在)。
我怎麼能這樣做呢?
我看到的所有示例都會從服務器端函數返回一個string

+0

序列化是你的朋友。返回一些格式,允許您解釋數據是字符串或數字還是數組或對象或爲空。有幾種方法可以做到這一點。傳統上你會返回XML(ajaX中的X)。這些天大多數人都會返回JSON。 – slebetman

+0

你想檢查'success'回調中的列表是否爲空?如果是這樣,只需檢查'result === null'? – jonathanGB

+0

您無法通過javascript調用服務器上的函數,只能訪問URL。 – adeneo

回答

0

如果你有服務器端的端點控制,然後返回任何你想要的,表示沒有匹配 - 空單,空,空字符串等,然後在成功函數檢查。

注意ajax參數dataType。這告訴ajax函數如何格式化響應以供您使用。如果您希望返回JSON,請使用dataType: json並在success函數中檢查空的json數組result.length === 0。在爲空或空字符串的情況下,請使用dataType: text並檢查result == "null"result == ""。等

如果你沒有控制服務器端,那麼你將需要符合它發回給你的任何數據。 dataType仍然是關鍵。

0
[WebMethod] 
public static int function(int Id) 
{ 
    return Id; 
} 
+0

爲什麼這是返回int? – mysticalstick

0

如果您只需要使用ajax,最好的選擇是XMLHttpRequest,是Vanilla JS,速度更快。

如果你決定使用jQuery使用AJAX的功能是:

$.ajax({ 
    type: "POST", 
    url: "Default.aspx/function", 
    data: { searchBy: id }, 
    dataType: 'json', 
    success: function(result) { 
     // Do something 
    } 
}); 
+0

'url:'字段的語法是什麼? .aspx.'頁面是當前頁面還是函數名稱? – mysticalstick

+0

url可以是「url:a_cross_domain_url」或「url:'/Default.aspx/function'」,第二個選項請求使用當前頁面域。 –

0

我從來沒有做過C#,但你url參數必須是一個文件(例如,url: Default.aspx)的路徑。在你的文件中,你應該有邏輯來處理請求並調用正確的函數。該功能將檢查數據庫並打印結果。

// inside Default.aspx 
// 1- is there a POST parameter? If so, call foo() 

public static string foo(string postParam) { 
    // check DB, process 
    Print(result) 
} 

裏面你success回調,檢查是否爲空:

.then(function(result) { 
    if (result === null) // do stuff 
}) 
相關問題