【问题标题】:Parse ajax response object data解析ajax响应对象数据
【发布时间】:2019-12-05 08:15:15
【问题描述】:

我正在使用 jQuery $.post 方法传递一个对象。当使用$.get 方法加载它时,我需要正确解析对象的消息字段。我能够删除等号“=”符号和“&”符号,但如果它是一条长消息,它将包含加号“+”符号并且逗号无法正确显示。这是我得到的控制台输出:

{user: "demo", message: "Lorem+ipsum+dolor+sit+amet%2C+consectetur+adipisci…+qui+officia+deserunt+mollit+anim+id+est+laborum."}
message: "Lorem+ipsum+dolor+sit+amet%2C+consectetur+adipiscing+elit%2C+sed+do+eiusmod+tempor+incididunt+ut+labore+et+dolore+magna+aliqua.+Ut+enim+ad+minim+veniam%2C+quis+nostrud+exercitation+ullamco+laboris+nisi+ut+aliquip+ex+ea+commodo+consequat.+Duis+aute+irure+dolor+in+reprehenderit+in+voluptate+velit+esse+cillum+dolore+eu+fugiat+nulla+pariatur.+Excepteur+sint+occaecat+cupidatat+non+proident%2C+sunt+in+culpa+qui+officia+deserunt+mollit+anim+id+est+laborum."
user: "demo"
__proto__: Object

逗号替换为%2C 字符,空格替换为加号。 没有这个标志的文字如何获取?

这是我为此作用域编写的一个函数,但它根本不起作用。

function parseData(data){
 var params = {}
 params.data = data.split("&");
 params.result = {};
  for(var i = 0; i < params.data.length; i++) {
   var item = params.data[i].split("=");
   params.result[item[0]] = item[1];
  }
 return params.result;
}

【问题讨论】:

标签: javascript


【解决方案1】:

使用这个:

function parseData(data){
   return decodeURIComponent((data + '').replace(/\+/g, '%20'));
}

使用这个功能希望它对你有用:

export function parseData(data) {
    url = decodeURI(url);
    if (typeof url === 'string') {
        let params = url.split('?');
        let eachParamsArr = params[1].split('&');
        let obj = {};
        if (eachParamsArr && eachParamsArr.length) {
            eachParamsArr.map(param => {
                let keyValuePair = param.split('=')
                let key = keyValuePair[0];
                let value = keyValuePair[1];
                obj[key] = value;
            })
        }
        return obj;
    }
}

【讨论】:

  • 我还需要从 ajax 返回的对象中删除 &amp;=,您建议的代码也适用于现在替换为 %2C 的逗号?
  • 所以我希望函数的结果是原始字符串对吗?
  • 我已经测试过你的代码建议,但它不起作用。传递给函数的数据不做处理,字符串会这样显示:param=xx&amp;param2=xxx+yyyy!
  • 使用这个功能希望它能解决你的问题: export function parseData(data) { url = decodeURI(url); if (typeof url === 'string') { let params = url.split('?'); let eachParamsArr = params[1].split('&amp;'); let obj = {}; if (eachParamsArr &amp;&amp; eachParamsArr.length) { eachParamsArr.map(param =&gt; { let keyValuePair = param.split('=') let key = keyValuePair[0]; let value = keyValuePair[1]; obj[key] = value; }) } return obj; } }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
  • 2012-07-07
  • 2011-08-09
  • 2018-10-18
  • 2019-05-15
  • 1970-01-01
相关资源
最近更新 更多