在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 推送到一个数组中

通过按钮推送到 laravel 上的 jquery ajax 返回视图返回到部分动态变化

如何在 PHP 中将数组值推送到另一个数组中? [复制]

将数据推送到页面而不定期检查?

如何使用ajax将数据推送到数组

如何在nodeJS的mysql查询中将值推送到数组?