使用来自 Ajax 响应的 JSON 数据数组


working with JSON data array from Ajax response?

是否可以在PHP中使用来自AJAX请求的响应?我不是真正的JS开发人员,所以我正在用这个来投票。

我已经一起破解了这个:

      var base_url = 'http://dev.local/westview/public';
  $('select.child_id').change(function() {
var child_id = $('#child_id');
var dataString = 'child_id=' + child_id;
$.ajax({
  type: "POST",
  url: base_url + "/finance/payment-history",
  data: dataString,
  dataType: 'html',
  success: function(html) { 
    alert(html);
  },
});
return false; 

});

该功能似乎工作正常,它给了我一个包含正确数据的警报。

{"payments":[{"id":"19","child_id":"21","club":"Breakfast Club","term":"Half Term 3","amount":"15.00","pdate":"2015-02-25","notes":"","created_at":"2015-02-11 12:16:32","updated_at":"2015-02-11 12:16:32","starting_debt":"0","debt_start_date":"2015-01-05"},{"id":"20","child_id":"21","club":"After School Club","term":"Half Term 3","amount":"11.50","pdate":"2015-02-25","notes":"","created_at":"2015-02-11 12:16:49","updated_at":"2015-02-11 12:16:49","starting_debt":"0","debt_start_date":"2015-01-05"}]}

我需要能够将其输出给用户,以便其可读性。我发现很多指南都描述了替换数据,但就目前而言,在选择child_id之前没有数据。然后我希望它以可读的方式显示上述数据。

我不知道如何开始使用视图文件(php)中的数据。

谢谢

[编辑]更新了工作代码:

var base_url = 'http://dev.local/westview/public';

$('select.child_id').change(function() {
  var response = "";
  var child_id = $('#child_id').val();
  var dataString = 'child_id=' + child_id;
  $.ajax({
    type: "POST",
    url: base_url + "/finance/payment-history",
    data: dataString,
    success: function(response) { 
      var json_obj = $.parseJSON(response);
      var output = "<ul>";
      for (i=0; i < json_obj.payments.length; i++)
      {
        var payment = json_obj.payments[i];
        var date = moment(payment.pdate).format('Do MMM YYYY');
        output += "<li>&pound;" + payment.amount + " - " + date + " (" + payment.club + ")</li>";
      }
      output += "</ul>";
      $('.history-section').html(output);
    },
    dataType: "html"
  });
});

这样做。

var data = $.parseJSON("your_json");
var output= "<ul>";
for (i=0; i < data.payments.length; i++){
    output += "<li>" + data.payments[i].id + ", " + data.payments[i].child_id + "</li>";
}
output += "</ul>";

使用

dataType: 'json',

相反

dataType: 'html',

然后使用每个从成功函数中的响应中获取记录

使用 $.parseJSON() 将 json 格式数据转换为数组

正确的代码在 ajax 的成功。喜欢

var data = $.parseJSON(html);

数据在你得到响应的数组格式

你需要在 php 文件中使用 json_encode() 将数据作为数组发送回去

例如;

$myarray = array("data1"=>"value1","data2"=>"value2");
echo json_encode($myarray);

然后,您可以像这样在 js 文件中单独访问数据;

 success: function(html) { 
    alert(html.data1);
    alert(html.data2);
  },

您还需要将数据类型更改为"json"

$('input[name=''product_attribute[' + attribute_row + '][name]'']').catcomplete({
    delay: 0,
    source: function(request, response) {
        $.ajax({
            url: 'index.php?route=catalog/attribute/autocomplete&token=<?php echo $token; ?>',
            type: 'POST',
            dataType: 'json',
            data: 'filter_name=' +  encodeURIComponent(request.term),
            success: function(data) {   
                response($.map(data, function(item) {
                    return {
                        category: item.attribute_group,
                        label: item.name,
                        value: item.attribute_id
                    }
                }));
            }
        });
    }, 
    select: function(event, ui) {
        $('input[name=''product_attribute[' + attribute_row + '][name]'']').attr('value', ui.item.label);
        $('input[name=''product_attribute[' + attribute_row + '][attribute_id]'']').attr('value', ui.item.value);
        return false;
    }
});

你可以像这样映射你的 json