使用Ajax jQuery来自服务器端的JSON字符串未正确显示 [英] JSON string from server side not coming properly using ajax jquery
问题描述
我正在做的是,我正在使用mvc
从服务器端获取数据.数据正确返回了返回部分.
但是,当我在客户端进行调试时,我只会得到参数值[
.
What I am doing is, i am getting data from server side using mvc
. The data is properly coming in return part.
But when I m debugging in the client side, I am only getting the parameter value as [
.
下面是我得到的JSON响应.
Below is the JSON response which I am getting.
[{"VENDORNAME":"ABC","VENDORCODE":"1234"},{"VENDORNAME":"Abc test","VENDORCODE":"233311"},{"VENDORNAME":"ABC 2","VENDORCODE":"12345"}]
但是,当我签入客户端时,只能在参数中 ["获得它.
But when I check in the client I get it only [ in the parameter.
下面是该代码
getValue: function (element) {
return {
label: element.VENDORNAME,
value: element.VENDORCODE
};
},
在element
中的
我只能作为[
请提出我错了的地方
更新
这是完整的代码
var autocompleteOptions = {
url: function (phrase) {
return AppConfig.PrefixURL + 'App/GetVendorData';
},
getValue: function () {
return {
label: element.VENDORNAME,
value: element.VENDORCODE
};
},
ajaxSettings: {
dataType: "json",
method: "POST",
data: {
dataType: "json",
}
},
preparePostData: function (data) {
data.phrase = $("#txtAssignVendor").val();
return data;
},
requestDelay: 400
};
以及下面的参考链接
http://easyautocomplete.com/examples#examples-ddg
服务器代码
[HttpPost]
public JsonResult GetVendorData(string phrase)
{
string strJsonData = "";
try
{
Assignment ObjSAPAssign = new Assignment();
DataTable dt = ObjSAPAssign.GetVendorList(phrase);
strJsonData = JsonConvert.SerializeObject(dt, Formatting.None);
}
catch (Exception ex)
{
ApplicationLog.Error("Error", "GetVendorData", ex.Message);
ErrorLog.HandleErrorLog("", "", "GetVendorData", ex.Message);
}
return Json(strJsonData);
}
推荐答案
错误是您将DataTable
序列化了两次,一次是通过JsonConvert.SerializeObject()
进行序列化,另一次是通过Json()
方法进行了序列化.
The error was that you were serializing your DataTable
twice, once by JsonConvert.SerializeObject()
and the other by Json()
method.
制作这样的模型类:
public class VendorData
{
public string VENDORNAME { get; set; }
public string VENDORCODE { get; set; }
}
这是修改后的操作方法
[HttpPost]
public JsonResult GetVendorData(string phrase)
{
try
{
Assignment ObjSAPAssign = new Assignment();
DataTable dt = ObjSAPAssign.GetVendorList(phrase);
List<VendorData> vendorList = dt.AsEnumerable().Select(row => new VendorData
{
VENDORNAME = row.Field<string>("VENDORNAME"),
VENDORCODE = row.Field<string>("VENDORCODE")
}).ToList();
// Serializing only once
return Json(vendorList, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
ApplicationLog.Error("Error", "GetVendorData", ex.Message);
ErrorLog.HandleErrorLog("", "", "GetVendorData", ex.Message);
return Json(new object(), JsonRequestBehavior.AllowGet);
}
}
最后是在客户端:
var autocompleteOptions = {
url: function (phrase) {
return AppConfig.PrefixURL + 'App/GetVendorData';
},
getValue: "VENDORNAME",
template: {
type: "description",
fields: {
description: "VENDORCODE"
}
},
list: {
match: {
enabled: true
}
},
ajaxSettings: {
dataType: "json",
method: "POST",
data: {
dataType: "json",
}
},
preparePostData: function (data) {
data.phrase = $("#txtAssignVendor").val();
return data;
},
requestDelay: 400
};
这篇关于使用Ajax jQuery来自服务器端的JSON字符串未正确显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!