Выдвижение строки в массив в AJAX, функция успеха в jquery не работает - PullRequest
0 голосов
/ 01 февраля 2020

Я пытаюсь настроить чат-бота jquery, используя пример плагина, присутствующего в https://www.jqueryscript.net/form/engage-audience-conversational-chatty.html.

Я использую следующий код:

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!!'},);
}

, но если Я пытаюсь pu sh строка в массив, он не работает. Я создаю содержимое строки, как указано ниже:

// java code:
result = "{type: 'input', tag: 'text', name: 'converse', 'chat-msg': 'Hi Welcome!!'},"
return result;

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020

Я использовал 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();
0 голосов
/ 01 февраля 2020

Итак, вы пытаетесь сделать объект pu sh a 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 
})

Другой способ - анализ строки в случае успеха, но лучше изменить dataType.

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!!");
});
...