【发布时间】:2011-05-01 18:23:14
【问题描述】:
我正在使用带有 javascript 的 PageMethod 来调用服务器端代码:
function getMonths() {
PageMethods.BindMonthlyPeriods(getMonthsSuccess, onFailure); }
}
function getMonthsSuccess(result, userContext, methodName) {
var picker = document.getElementById("monthPicker");
for (var i = 0; i < result.length; i++) {
var newOption = document.createElement('option');
newOption.text = result[i];
newOption.value = result[i];
picker.add(newOption);
}
}
在代码隐藏中:
[WebMethod]
public static string[] BindMonthlyPeriods()
{
}
这在 IE / Chrome 中可以正常工作,但在 Firefox 中则不行。没有特定的错误消息,数据只是没有填充到 Firefox 中。
我也尝试过使用 jQuery ajax 调用,但这不起作用,虽然我不确定我是否正确地完成了它:
function getMonths() {
$.ajax({
type: "POST",
url: "page.aspx/BindMonthlyPeriods",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
var picker = document.getElementById("monthPicker");
for (var i = 0; i < msg.length; i++) {
var newOption = document.createElement('option');
newOption.text = result[i];
newOption.value = result[i];
picker.add(newOption);
}
}
});
编辑
使用 Firebug,我在“网络”选项卡中没有发现任何错误消息,但在“控制台”选项卡中发现了这个错误:
未捕获的异常:[异常...“没有足够的参数”nsresult:“0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)”位置:“JS 框架 :: http://xxxxx.xxxxxxx.com/.../page.aspx :: getMonthsSuccess :: line 251”数据:否]
【问题讨论】:
-
@Sean,你能用firebug看看是什么问题吗,它清楚地显示了ajax中的错误
-
jQuery ajax 调用在 IE 中也不起作用。我认为 id 宁愿使用 jquery 方法而不是 PageMethod 方法。生病检查萤火虫。
-
@sean,使用firebug调试,很容易找到问题所在,看net tab的resonse。
-
@sean 是你的方法需要任何参数,如果是这样,它在那里失败
-
该方法没有任何参数,只是返回一个字符串[]。
标签: javascript asp.net json jquery pagemethods