在jQuery中将字符串推送到AJAX成功函数中的数组不起作用
Posted
技术标签:
【中文标题】在jQuery中将字符串推送到AJAX成功函数中的数组不起作用【英文标题】:Pushing a string to an array in AJAX success function in jquery not working 【发布时间】:2020-05-17 19:23:37 【问题描述】:我正在尝试使用 https://www.jqueryscript.net/form/engage-audience-conversational-chatty.html 中的示例插件自定义 jquery 聊天机器人。
我正在使用以下代码:
var tags=[];
$.ajax(
type: "POST",
/*method type*/
url: "sample.jsp",
dataType: "text",
data: "usrname=" + $('#uname').val(),
async: false // To push values to an array
) //ajax
.done(function(data)
alert(data); // it displayed all the content which is needed for the array correctly
tags.push(data);
)
.fail(function(f)
alert("Chatbot Module fetch failed!!");
);
我正在从 java 方法中检索“数据”作为字符串:
如果我直接在 javascript 函数中使用以下行,它工作正常:
function addArr()
tags.push(type: 'input', tag: 'text', name: 'converse', 'chat-msg': 'Hi Welcome!!',);
但如果我尝试将字符串推入数组,它就不起作用。我正在构建字符串内容,如下所示:
// java code:
result = "type: 'input', tag: 'text', name: 'converse', 'chat-msg': 'Hi Welcome!!',"
return result;
【问题讨论】:
tags.push(JSON.parse(data))
工作了吗?
我在浏览器控制台中看到此错误 SyntaxError: JSON.parse: expected property name or '' at line 11 column 2 of the JSON data
试试这个tags.append('custom_name', JSON.stringify(data));
@AjantaR 您可以将返回的数据添加到您的问题中吗?
@Rezash 为什么是JSON.stringify
?为什么tags.append
?
【参考方案1】:
所以你想要做的是将一个 js 对象推送到一个数组,但是你得到一个 JSON 字符串作为响应?如果是这种情况,您可以将 dataType 更改为“json”。
$.ajax(
type: "POST",
/*method type*/
url: "sample.jsp",
dataType: "json", // dataType -> json
data: "usrname=" + $('#uname').val(),
async: false // To push values to an array
)
另一种方法是成功解析字符串,但更改数据类型更简洁。
var tags=[];
$.ajax(
type: "POST",
/*method type*/
url: "sample.jsp",
dataType: "text",
data: "usrname=" + $('#uname').val(),
async: false // To push values to an array
) //ajax
.done(function(data)
tags.push(JSON.parse(data)); // Parse string JSON.parse(data)
)
.fail(function(f)
alert("Chatbot Module fetch failed!!");
);
【讨论】:
我尝试了第二种方法,但它在浏览器控制台中显示错误,如之前的帖子中给出的那样 我尝试使用第一种方法,即:dataType: "JSON" 并且成功了!!!!.. 非常感谢 type: "input", tag: "radio", name: "module", "chat-msg": "Hi Welcome" + $('#uname').val() + “!!” + " 选择下面给出的任何颜色!!", children: [ value: "red", text: "red", , value: "blue", text: "blue", , value: "绿色”,文本:“绿色”,],); //推送结束。如何在 json 对象中发送数组 'red','blue','green'。我可以查看问题,但要选择颜色,它显示未定义。【参考方案2】:我用过dataType: "json", // dataType -> json
然后我使用 JSONObject 和 JSONArray 创建数组。
enter code here
JSONObject dao = new JSONObject();
JSONObject dao1 = new JSONObject();
ResultSet rs = null;
JSONArray ja = new JSONArray();
String modules="";
String result ="";
String modl="";
String qry = "";
qry = "SELECT color FROM allmodules";
rs = db1.execSQL(qry);
while( rs.next() )
modules = rs.getString("color") ;
dao1.put("value", modules);
dao1.put("text", modules);
ja.add(new JSONObject(dao1));
dao.put("type","input");
dao.put("tag", "radio");
dao.put("name","module");
dao.put("chat-msg", "Hi Welcome" + user + "!!" + " Choose any of the color given below!!");
dao.put("children",ja);
return dao.toString();
【讨论】:
以上是关于在jQuery中将字符串推送到AJAX成功函数中的数组不起作用的主要内容,如果未能解决你的问题,请参考以下文章
需要在 jQuery 中从 AJAX 将所有 JSON 推送到一个数组中