Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中的ajax调用中将字符串转换为数组_Javascript_Ajax - Fatal编程技术网

在javascript中的ajax调用中将字符串转换为数组

在javascript中的ajax调用中将字符串转换为数组,javascript,ajax,Javascript,Ajax,我正在进行一个ajax调用,并从数组中返回类似于result=[1,2,3]的结果 我需要将其转换为一个数组并进行迭代。由于我的字符串在值周围没有引号,所以数组无法正确读取 这是我的代码,如果你能告诉我正确的方法。谢谢 xmlhttp.open("POST","SearchServlet", true); xmlhttp.onreadystatechange = function(){ if (xmlhttp.readyState == 4 && xm

我正在进行一个ajax调用,并从数组中返回类似于
result=[1,2,3]的结果

我需要将其转换为一个数组并进行迭代。由于我的字符串在值周围没有引号,所以数组无法正确读取

这是我的代码,如果你能告诉我正确的方法。谢谢

xmlhttp.open("POST","SearchServlet", true);
xmlhttp.onreadystatechange = 
    function(){
         if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
              resultData = xmlhttp.responseText; 
          // resultData = [one, two, three];

              // need to make valid array to iterate it 
              for (var i = 0; i < resultData.length; i++) {
                  console.log(resultData[i]);
              }
        }
    };  
xmlhttp.open(“POST”,“SearchServlet”,true);
xmlhttp.onreadystatechange=
函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
resultData=xmlhttp.responseText;
//结果数据=[1,2,3];
//需要生成有效数组来迭代它
对于(var i=0;i
理想情况下,您可以使用该函数,但由于未引用
one
two
three
,因此您必须做一些工作

您可以遍历方括号中的每个项目,并在其周围加上双引号,然后调用
JSON.parse
。或者,按照Steve的建议,重写服务器的处理程序,以使用正确的JSON进行响应

如果引用它们,JSON.parse的工作方式如下:

> JSON.parse('["one", "two", "three"]')
["one", "two", "three"]

理想情况下,您可以使用该函数,但由于未引用
one
two
three
,因此您必须做一些工作

您可以遍历方括号中的每个项目,并在其周围加上双引号,然后调用
JSON.parse
。或者,按照Steve的建议,重写服务器的处理程序,以使用正确的JSON进行响应

如果引用它们,JSON.parse的工作方式如下:

> JSON.parse('["one", "two", "three"]')
["one", "two", "three"]
您好“用户”,欢迎来到SO。感谢您提供的代码示例和格式良好的问题:)


由于HTTP请求使用字符串(它们不发送数组),因此发送响应的最佳方式是JSON格式。然后可以轻松地将JSON字符串解析为数组

JSON是一种非常易于使用(通常)的方法,可以发送字符串并将其转储到数组中,反之亦然

有(我认为这是服务器端代码的语言)和PHP(许多人也使用)以及其他所有语言

出于某种原因,我记得Java的使用比它们应该的更难,但希望我弄错了。不管是哪种方式,学习都不难,它肯定会让你的代码更上一层楼


使用原始字符串进行此操作的一种不正确、丑陋的方法是:

// Remove first and last bracket
var data = resultData.substr(1, resultData.length - 2);
// Split the array
data = data.split(", ");
…但请不要这样做,这只是出于教育目的(冒着被否决的风险)。我还没有测试过,但你知道了

同样,最好的方法是改变设计,在任何地方都使用JSON。

您好“用户”,欢迎使用。感谢您提供的代码示例和格式良好的问题:)


由于HTTP请求使用字符串(它们不发送数组),因此发送响应的最佳方式是JSON格式。然后可以轻松地将JSON字符串解析为数组

JSON是一种非常易于使用(通常)的方法,可以发送字符串并将其转储到数组中,反之亦然

有(我认为这是服务器端代码的语言)和PHP(许多人也使用)以及其他所有语言

出于某种原因,我记得Java的使用比它们应该的更难,但希望我弄错了。不管是哪种方式,学习都不难,它肯定会让你的代码更上一层楼


使用原始字符串进行此操作的一种不正确、丑陋的方法是:

// Remove first and last bracket
var data = resultData.substr(1, resultData.length - 2);
// Split the array
data = data.split(", ");
…但请不要这样做,这只是出于教育目的(冒着被否决的风险)。我还没有测试过,但你知道了


同样,最好的方法是改变设计,在任何地方都使用JSON。

试试这个,它有点复杂,但它可以工作:

resultData = xmlhttp.responseText;
resultData = resultData.substring(1, resultData.length-1);
var resultArray = resultData.split(','); 

试试这个,它有点复杂,但它会起作用:

resultData = xmlhttp.responseText;
resultData = resultData.substring(1, resultData.length-1);
var resultArray = resultData.split(','); 

虽然我不知道为什么不能输出有效的JSON(数组中有带引号的字符串),但这个小而脏的函数可以将“几乎数组”解析为有效数组,通过加引号和删除空格,该函数返回一个真实数组

function validArray(str){
  return str
         .replace(/[\[\]']+/g,"")
         .split(",")
         .map(function(v){ 
           return v.replace(/^\s\s*/g, '').replace(/\s\s*$/g, '');
         });
}

最好的解决方案是避免这种解析,并使用JSON进行响应。通过这种方式,您可以简单地执行JSON.parse并轻松获得JS对象。

虽然我不知道为什么不能输出有效的JSON(数组中有带引号的字符串),但这个小而脏的函数可以将“几乎数组”解析为有效的数组,通过加引号和删除空格,该函数返回一个真实的数组

function validArray(str){
  return str
         .replace(/[\[\]']+/g,"")
         .split(",")
         .map(function(v){ 
           return v.replace(/^\s\s*/g, '').replace(/\s\s*$/g, '');
         });
}

最好的解决方案是避免这种解析,并使用JSON进行响应。通过这种方式,您可以简单地执行JSON.parse并轻松获得JS对象。

这与Java有什么关系?您希望1、2和3是字符串吗?这与Java有什么关系?您希望1、2和3是字符串吗?谢谢大家,所有有用的答案,我将使用JSON发送数据。谢谢大家,所有有用的答案,我将使用JSON发送数据。