从请求URL响应数据中获取价值

时间:2019-02-11 09:28:56

标签: javascript jquery

请求的网址已发送-https://www.example.com/detail.guest.html?ppc=FDE466920006DCEFA697BF982FC9C87C5B257ECB2230CBF4D6D6CA740C7B894D5795F70DED928ED3B00C1F3F77DF974DFD73882DEBDD7EC063B37DEB24CF655528FD911109C57961AE314C612772AADFD2E193D572E6F6C8E249A6DAA

正确获得第三方期望的以下响应数据。

BookersID = 250100000002; BookersTitle = Mr; BookersFirstName = test1; BookersLastName = test2

enter image description here


我想分别提取“ BookersID”,“ BookersTitle”,“ BookersFirstName”,“ BookersLastName”,并在输入字段中显示此值。

JS:

var bookerID = data[0].BookersID;
var bookerTitle = data[0].BookersTitle;
var bookerFname = data[0].BookersFirstName;
var bookerLname = data[0].BookersLastName;
console.log("BookersID", bookerID);
console.log("BookersTitle", bookerTitle);

但是显示值出现错误。

请让我知道如何在控制台日志中获取该值?

谢谢

4 个答案:

答案 0 :(得分:1)

首先,您需要从xhr请求中获取数据。为此,您需要添加回调函数。 (jQuery.get() documentation中的更多信息)

$.get( endpoint, function( data ) { // add callback to handle response
 // ... parse data here
});

据我了解,您需要解析数据。可以使用String.prototype.split方法和简单的映射来完成。

console.log(data) // BookersID=250100000002;BookersTitle=Mr;BookersFirstName=test1;BookersLastName=test2
var parsed = data.split(';').map(part => ({ name: part.split('=')[0], value: part.split('=')[1] }));

console.log(parsed);

输出:

[
   {name: "BookersID", value: "250100000002"},
   {name: "BookersTitle", value: "Mr"},
   {name: "BookersFirstName", value: "test1"},
   {name: "BookersLastName", value: "test2"}
]

如果要获取数据作为对象:

var parsedObject = parsed.reduce(
    (obj, item) => Object.assign(obj, {[item.name]: item.value}) ,{});
// {BookersID: "250100000002", BookersTitle: "Mr", BookersFirstName: "test1", BookersLastName: "test2"}

答案 1 :(得分:0)

如果得到相同的响应,则需要编写一个实用函数以将其转换为对象

function _convert(responseString) {
  var _obj = {};

  responseString.split(";").forEach(function(pair){
     var _pairArr = pair.split("=");
     _obj[_pairArr[0]] = _pairArr[1];
  });

  reuturn _obj;
}

var responseString = "BookersID=250100000002;BookersTitle=Mr;BookersFirstName=test1;BookersLastName=test2";
var obj = _convert(responseString);

obj['BookersID']; // 250100000002
// or
obj.BookersID; // 250100000002

注意:仅当您的回复格式与您提到的格式完全相同时,此选项才有效。

答案 2 :(得分:0)

build job: 'job_name', parameters: [string(name: 'yourStringParameter', value: "$variable_name")]

输出:

var str = 'BookersID=250100000002;BookersTitle=Mr;BookersFirstName=test1;BookersLastName=test2';
var data = {};
var parsed = str.split(';').map(part => { let x = part.split("="); data[x[0]] = x[1]; console.log(x) });
console.log(data)

答案 3 :(得分:0)

您可以使用.reduce.split将字符串创建为对象,然后可以访问其属性

const data = "BookersID=250100000002;BookersTitle=Mr;BookersFirstName=test1;BookersLastName=test2",

dataObj = data.split(';').reduce((acc, kvp) =>
    ({...acc, ...(([key, value]) => ({[key]: value}))(kvp.split('='))}),
  {});

console.log(dataObj);
// access properties:
console.log(dataObj.BookersID);