我有以下的JSON類我打算用它來對我的數據庫異步執行管理電話:如何通過JSON將可選參數傳遞給WebMethod?
<script type="text/javascript">
var CalendarManager = {
defaultOptions: {
staffcode: 0, // required
date: 0, // required
activityCode: 0, // required
clientCode: null, // optional
contactCode: null, // optional
destination: '', // optional/doesn't matter
travelCode: null, // optional
miles: null, // optional
overnight: false, // optional
notes: '' // optional/doesn't matter
},
createEvent: function(options) {
var combinedOptions = $.extend(true, {}, this.defaultOptions, options);
$.ajax({
type: "POST",
url: 'calendar/calendar-manager-ajax.aspx/CreateEvent',
data: combinedOptions,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data, textStatus, XMLHttpRequest) {
alert(textStatus + ", " + data);
},
error: function(data, textStatus, XMLHttpRequest) {
alert(textStatus + ", " + data);
}
});
}
};
</script>
然後我用它在我的網頁像這樣:
<script type="text/javascript">
CalendarManager.createEvent(); // random test
</script>
目前,我試圖讓這個AJAX調用火以下方法:
[WebMethod()]
public static string CreateEvent(int staffcode, int date,
int activitycode, int? clientcode,
int? contactCode, string destination,
int? travelcode, int? miles,
bool overnight, string notes)
{
return null;
}
不幸的是,該方法CreateEvent
沒有得到CAL領導,我得到一個AJAX錯誤(設置一個斷點不停止執行):如果我改變data: combinedOptions
到data: "{}"
錯誤,[XmlHttpRequest對象]
,並添加另一種方法來我的ASPX (如下)代碼工作成功:
[WebMethod()]
public static string CreateEvent()
{
return null;
}
基本上,我的問題是:我該如何指定可選參數的WebMethod
提供JSON數據時?
我知道我可以將參數降低到所需的值,然後使用HttpContext.Request.Params
來讀取可選參數的值,但我會想我在這裏嘗試的方式應該已經工作了。
EDIT
該錯誤的XMLHttpRequest.responseText
值爲:
無效JSON原始:staffcode。
這是扔我更加關問題:(的氣味
這就是我想要做的 - 在默認情況下使用'null',所以'int?'值有希望包含'null'。所有參數都已經被指定,你可以看到。 – Codesleuth 2010-02-15 16:30:15
看起來像你已經在你需要的地方。真的沒有辦法做你的建議。我知道,我已經嘗試過了。你不能有可選的參數,如果你沒有參數構造端點,希望從上下文中讀取它們,你將會得到一個無法識別的參數的異常。 IIRC。 – 2010-02-15 16:57:49