【发布时间】:2016-05-12 15:12:03
【问题描述】:
我遇到了 jQuery 自动完成与源 .asmx 文件的一个大问题 这是我的代码:
$("#enterprise_search").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Services/EnterprisePortal/wsGetFAQQuestions.asmx/GetQuestionsByWord",
type: "GET",
contentType: "application/json; charset=utf-8",
data: "Word="+$('#enterprise_search').val(),
dataType: "json",
success: function (data) {
console.log('Data recieved');
response($.map(data.d, function () {
return {
label: item.Name + '(' + item.Value + ')',
value: item.Name
}
}))
},
error: function (xhr, msg) {
console.log('Database connect error: ' + msg);
}
});
},
minLength: 1,
select: function (e, ui) {
var result = item.Name;
var answer = item.Value;
$('#search-results').append('<p>' + result + ' : ' + answer + '</p>');
},
close: function () {
$("#enterprise_search").val('');
}
});
有一个c#的方法什么的(那个代码不是我的,只是给你看看)
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] //Specify return format.
public string GetQuestionsByWord(string Word)
{
//JavaScriptSerializer YourSerializer = new JavaScriptSerializer();
//return YourSerializer.Serialize(FAQsCOL);
Dictionary<string, string> FAQsCOL = clsFAQBLL.GetFAQCOLByWordInQuestionAnswer(Word);
//Dictionary<string, string> ReturnLinks = FAQsCOL.ToDictionary(m => string.Format("{0}?{1}={2}", clsParameters.clsPages.ENTERPRISE_PORTAL_FAQs, clsParameters.clsQueryString.FAQ_ID, m.Key), m => m.Value);
return JsonConvert.SerializeObject(FAQsCOL);
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] //Specify return format.
public string GetQuestionByQuestionId(int FAQId)
{
Linq.General.FAQ CurrentFAQ = clsFAQBLL.GetFAQByFAQId(FAQId);
FAQ FAQ = new FAQ();
if (CurrentFAQ != null)
{
FAQ = new FAQ(CurrentFAQ.Question, CurrentFAQ.Answer);
}
return JsonConvert.SerializeObject(FAQ);
}
在所有这些之后,我进入控制台(搜索“2”):
jquery-2.1.4.min.js:2 Uncaught TypeError: Cannot use 'in' operator to search for 'length' in {"5":"שאלה - 17","11":"מהו הנוהל לגבי מתמחה אשר מנהלו מסרב לחתום על טופס ההרשמה לבחינה?","20":"מהו נוהל הזכאות לגשת לבחינות התמחות?"}
我尝试将数据推送到数组中(搜索“1”),就是这样:d
:
"{"2":"שאלה 2","3":"שאלה 2","4":"שאלה 2","11":"מהו הנוהל לגבי מתמחה אשר מנהלו מסרב לחתום על טופס ההרשמה לבחינה?","20":"מהו נוהל הזכאות לגשת לבחינות התמחות?"}"
谁能帮我解决这个问题?我已经为这个病态的事情浪费了很多时间 无法理解这是 web 服务或我的 jquery 函数中的错误还是什么
【问题讨论】:
-
console.log(data.d)在成功方法中给你什么?你应该使用'{"Word":"' + $('#enterprise_search').val() + '"}'。另外,请确保$('#enterprise_search').val()不包含任何会弄乱请求的时髦符号,例如“{”。 -
@Chintan 你的东西不工作,它返回错误 500(内部服务器错误)
console.log(data.d)成功(搜索“1”)-{"2":"שאלה 2","3":"שאלה 2","4":"שאלה 2","11":"מהו הנוהל לגבי מתמחה אשר מנהלו מסרב לחתום על טופס ההרשמה לבחינה?","20":"מהו נוהל הזכאות לגשת לבחינות התמחות?"}是否有可能是希伯来语搞砸了数据我得到?看第一个 -'2':'something':'11'
标签: c# jquery ajax web-services asmx