【问题标题】:Ajax fetching all usernames returns all usernames as one long string combinedAjax 获取所有用户名将所有用户名作为一个长字符串组合返回
【发布时间】:2023-03-12 05:55:01
【问题描述】:

我正在使用 php 从我的数据库中获取数据并使用 ajax 接收响应。

当我尝试显示所有结果时,ajax 响应将所有用户名组合为一个长字符串,而不是我可以循环的数组。

我错过了什么?

我的 ajax 代码如下:

   function userquery(){


    var user = document.getElementById("user").value;

    var userq = "%"+user+"%";


      var xmlhttp = new XMLHttpRequest();

        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == XMLHttpRequest.DONE) {   // XMLHttpRequest.DONE == 4
               if (xmlhttp.status == 200) {


                      var response = JSON.parse(xmlhttp.responseText);



               for(var i = 0; i <  response.length  ; i++){

                document.getElementById("response").innerHTML += response["user"];


               }

               }
               else if (xmlhttp.status == 400) {
                  alert('There was an error 400');
               }
               else {
                   alert('something else other than 200 was returned');
               }
            }
        };

        xmlhttp.open("POST", "userquery.php", true);
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xmlhttp.send("user=" + userq);
 }

【问题讨论】:

  • dom 中response id 的类型是什么(是 div/span 还是任何输入元素)?
  • @B.Desai 它是一个 div,可能缺乏知识,但我真的不知道我错过了什么,Jquery 不适合我......因为我想学习 vanilla Javascript

标签: javascript php html ajax xml


【解决方案1】:

您的元素是div,因此要分隔每个用户并将其添加到新行。在末尾添加&lt;br&gt;。更改您的代码

 document.getElementById("response").innerHTML += response["user"];

document.getElementById("response").innerHTML += response["user"]+"<br>";

【讨论】:

  • 已经试过了,现在它告诉我每个用户在每个新行中都“未定义”,并且它比我的表中存在的用户更“未定义”
  • 现在出现此错误 SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data for line var response = JSON.parse(xmlhttp.responseText);
猜你喜欢
  • 2014-04-09
  • 1970-01-01
  • 1970-01-01
  • 2018-03-27
  • 2019-04-20
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多