返回List<字符串>Jquery中的from JSON调用具有未定义的长度
returning List<string> from JSON call in Jquery has undefined length
我正在从jquery调用一个Web服务,并试图返回一个List(我还尝试了一个字符串[])。当我得到结果时,我可以看到它包含了一个包含我需要的值的数组,但我不能在Javascript中迭代它们,因为没有长度值。
我的C#Web服务如下:
[WebMethod]
public string[] GetMultiChoiceOptions(int keyId)
{
string connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["OBConnectionString"].ConnectionString;
SitesUtil db = new SitesUtil(connectionString);
List<MultiChoiceOption> keys = db.GetMultiChoiceOptions(keyId, 1); //TO DO CHANGE THIS TO REAL USERID
return keys.Select(a => a.OptionValue).ToArray();
}
我的Jquery/javscript调用如下:
function GetKeys(keyid) {
var pageUrl = '<%=ResolveUrl("~/WebService/UpdateDatabase.asmx")%>'
$.ajax({
type: "POST",
url: pageUrl + "/GetMultiChoiceOptions",
data: '{keyId:' + keyid + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: GetKeysSuccessCall,
error: OnErrorCall
});
}
function GetKeysSuccessCall(response) {
/* TO DO */
var i = 0;
for (i =0; i < response.length; i++) {
$("#popupList").append('<li>' + response[i] + '</li>');
}
}
我不知道如何处理javascript中没有长度的数组?
我认为您应该首先使用JSONSerializer向客户端发送正确的json结构。
您应该只返回一个具有JSON格式的字符串,然后它就可以工作了!
首先,使用Google控制台。最好的和有用的。
要查看您收到的内容,请使用console.log(response);
(而不是警报,不要在IE中使用,因为它不知道控制台)
首先尝试
$.ajax({
type: "POST",
url: pageUrl + "/GetMultiChoiceOptions",
data: '{keyId:' + keyid + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response){
GetKeysSuccessCall(response);
},
error: function(msg) {
OnErrorCall(msg);
}
});
还有一个更多:
function GetKeysSuccessCall(response) {
/* TO DO */
var i = 0;
for (i =0; i < response.length; i++) {
$("#popupList").append('<li>' + response[i] + '</li>');
}
}
repsonse必须代替item
我无法解释它为什么有效,但我需要做的是获取response.d值。。。。
所以这就是最终的解决方案:
function GetKeysSuccessCall(response) {
/* TO DO */
var result = response.d;
var i;
for (i = 0; i < result.length; i++)
{
$("#popupList").append('<li>' + result[i] + '</li>');
}
}
(如果有人能解释.d来自哪里?)
您可以像这样使用.each函数
success: function (response) {
var options= response.d;
$.each(options, function (index, option) {
$("#popupList").append('<li>' + response[option] + '</li>');
});
},
或
function GetKeysSuccessCall(response) {
/* TO DO */
var i = 0;
for (i =0; i < response.d.length; i++) {
$("#popupList").append('<li>' + response.d[i] + '</li>');
}
}
相关文章:
- PhoneGap无法调用未定义的方法loadurl
- Javascript/jQuery - “无法调用未定义的方法'push'”,而它是定义的
- 无法调用未定义的方法,但警报(方法)仍在工作
- 不能调用未定义节点.js的方法“forEach”
- 无法调用未定义的方法“addMethod”
- 未捕获的类型错误:无法调用未定义的方法“then”
- JavaScript uncatch TypeError:无法在第二次迭代时调用未定义的方法“拼接”
- 我收到此错误:无法在 String.toJadenCase 调用未定义的方法“替换”
- 主干不能调用未定义/未加载数据的方法“toJSON”
- 获取类型错误:无法在 angularjs 控制器中调用未定义的方法 'then'
- 致命错误:调用未定义的函数 FusionCharts()
- 不能调用未定义的 GetJson 的方法“toLowerCase”
- TypeError:无法调用未定义的 Angularjs 的方法 'then'
- backbonejs:不能调用未定义的方法“绑定”
- 变量不会传递给 Ajax 调用:未定义的变量
- 问.js节点承诺.“套接字”上缺少错误处理程序.类型错误:无法调用未定义的方法“then”
- Parse.com -- Cloud Code/JS -- “无法调用未定义的方法'set'”
- “未捕获的类型错误:无法调用未定义的方法'indexOf'”时选择jqgrid行
- 致命错误:未捕获错误:调用未定义的函数loginRelocate() Javascript
- 尝试使用 angularjs 拦截器时出错 未捕获 获取 无法调用未定义的方法“推送”