gpt4 book ai didi

javascript - 来自 ajax 中的 JSON 响应的值返回为未定义

转载 作者:行者123 更新时间:2023-11-30 09:52:36 26 4
gpt4 key购买 nike

在尝试从通过 jQuery 中的 $.post() 方法发送的 JSON 响应中检索值时,我遇到了一些问题。这是脚本:

var clickedName = $('#customerId').val();

$.post("/customer-search", { name: clickedName }).done( function(response) {
var results = $.parseJSON(response);
console.log(results);

$('#account-name').html(results.firstname + ' ' + results.lastname);
$('#email').html(results.email);
$('#telephone').html(results.telephone);
if (results.fax) {
$('#fax').html(results.fax);
} else {
$('#fax').html('n/a');
}
$('#personal').fadeIn();
return false;
});

只是为了解释一下,我在 Symfony2 项目中使用 twitter typeahead,基本上这个脚本会在键入后从列表中单击(选择)名称时触发。客户搜索 URL 运行数据库搜索,如下所示:

$q = $request->request->get('name');
$em = $this->getDoctrine()->getManager();
$customer = $em->getRepository('AppBundle:Oc73Customer')->findLikeName($q);
$addresses = $em->getRepository('AppBundle:Oc73Address')->findByCustomerId($customer[0]['customerId']);

$results = array();
$results['customer'] = $customer;
$results['addresses'] = $addresses;

return new Response(json_encode($results));

这将成功返回一个 Json 编码的响应,并且打印在控制台中的 'response' 的值(根据上面的 jquery)是:

{
"customer": [{
"firstname": "Mike",
"lastname": "Emerson",
"email": "xxxx@xxxx.co.uk",
"telephone": "01234 5678910",
"fax": null,
"password": "8e1f951c310af4c20e2cd6b68dee506ac685d7ae",
"salt": "e2b9e6ced",
"cart": null,
"wishlist": null,
"newsletter": 0,
"addressId": 84,
"customerGroupId": 1,
"ip": null,
"status": 1,
"approved": 1,
"token": null,
"dateAdded": {
"date": "2016-02-16 12:59:28.000000",
"timezone_type": 3,
"timezone": "Europe/Berlin"
},
"availCredit": null,
"customerId": 75
}],
"addresses": [{}]
}

我正在尝试使用我一直使用的方法来检索客户详细信息,因此要获取名字,我使用 results.firstname,其中结果是一个已解析的 JSON 字符串,如我的 jQuery 中所写响应。

但是,我从 results.firstname 得到的所有信息都是 undefined,即使它已明确定义。所以,基本上,我想知道我做错了什么?

希望有人能阐明我的问题。

最佳答案

您尝试访问的属性是 customer 数组中的对象,而不是父对象本身。假设响应只包含一个客户对象,那么您可以使用 result.customer[0],如下所示:

$.post("/customer-search", { name: clickedName }).done(function(response) {
var results = $.parseJSON(response);
var customer = response.customer[0];

$('#account-name').html(customer.firstname + ' ' + customer.lastname);
$('#email').html(customer.email);
$('#telephone').html(customer.telephone);
$('#fax').html(customer.fax ? customer.fax : 'n/a');
$('#personal').fadeIn();
});

如果有可能在数组中返回多个 customer 对象,您将需要修改代码以循环遍历这些对象并构建 HTML 以显示所有对象 - 而无需使用 id 属性。

关于javascript - 来自 ajax 中的 JSON 响应的值返回为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35607656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com