gpt4 book ai didi

javascript - 来自服务器端的 JSON 字符串无法使用 ajax jquery 正确发送

转载 作者:行者123 更新时间:2023-11-30 11:07:00 27 4
gpt4 key购买 nike

我正在做的是,我使用 mvc 从服务器端获取数据。数据正确地返回部分。但是当我在客户端调试时,我只得到参数值 [.

下面是我得到的 JSON 响应。

[{"VENDORNAME":"ABC","VENDORCODE":"1234"},{"VENDORNAME":"Abc test","VENDORCODE":"233311"},{"VENDORNAME":"ABC 2","VENDORCODE":"12345"}]

但是当我 checkin 客户端时,我只在参数中得到它[

下面是代码

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);
}

最佳答案

您的服务器代码:

    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);

您在 dt 中构建 vendor 列表, 然后你使用 JsonConvert.SerializeObject()构建响应 JSON。但是,您随后在对 Json() 的最后一次调用中再次将其序列化。 .应该是平淡的

    return strJsonData;

这就是为什么你得到 [作为第一个“元素”:自动完成插件以 字符串 的形式遍历您的 JSON。如果你改变那个return声明,它将正确接收您的实际表格。

编辑 — 我很确定上面描述了问题,但我的建议行不通,因为 strJsonData是错误的数据类型(不是 JsonResult )。基于this other question我认为这可能有效:不要使用 JsonConvert.SerializeObject .相反,使用普通 Json() :

    DataTable dt;
try
{
Assignment ObjSAPAssign = new Assignment();
dt = ObjSAPAssign.GetVendorList(phrase);

}
catch (Exception ex)
{
ApplicationLog.Error("Error", "GetVendorData", ex.Message);
ErrorLog.HandleErrorLog("", "", "GetVendorData", ex.Message);
}
return Json(dt, JsonRequestBehavior.AllowGet);

(请注意,我不太了解 C# - 关键是您必须使用 Json()JsonResult 中获取 DataTable。)

现在一旦解决了这个问题,并且自动完成插件正确接收了数组,接下来要决定的是如何处理这个 getValue()功能。该插件需要处理字符串。在您的代码中,您让该函数返回一个对象,这只会混淆插件。

我不确定大型应用程序需要什么,但该函数可以执行如下操作:

      getValue: function(element) {
return element.VENDORNAME + " - " + element.VENDORCODE;
}

关于javascript - 来自服务器端的 JSON 字符串无法使用 ajax jquery 正确发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55196839/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com