【问题标题】:How to read Json array in jquery in Laravel 5.2如何在 Laravel 5.2 的 jquery 中读取 Json 数组
【发布时间】:2016-09-09 11:12:30
【问题描述】:

我正在使用 ajax-jquery 在 laravel 5.2 中获取多个 eloquent 对象

这就是我在 jquery 中得到的响应

 {

 "screens":
 [{"screen_id":1,"screen_name":"Screen 1 ","screen_msg":"Hello","screen_status":"Active","cinema_id":1,"created_at":"2016-09-08 04:34:28","updated_at":"2016-09-08 04:34:28"}],

 "showtime":
  [{"show_id":6,"movie_id":1,"dimensional":"2D","cinema_id":1,"screen_id":1,"show_date":"2016-10-04","show_time":"00:57:00","show_status":"Active","created_at":"2016-09-08 12:21:06","updated_at":"2016-09-08 12:21:06"},
   {"show_id":7,"movie_id":1,"dimensional":"2D","cinema_id":1,"screen_id":1,"show_date":"2016-10-04","show_time":"00:57:00","show_status":"Active","created_at":"2016-09-08 12:22:15","updated_at":"2016-09-08 12:22:15"}]

 }

我的控制器功能代码

  public function getscreen($id)
{
    $screens=Movies_screen::where('cinema_id',$id)->get();
    $showtime=Movies_showtimes::where('cinema_id',$id)->get();

    return response()->json(['screens' => $screens, 'showtime' => $showtime]);
}

我正在将 jquery 中的那些 json 数组读取为

  $("#cinemahall").on("change click",function(){

var cinema_id=$("#cinemahall option:selected").val();
//ajax
    $.get('/askspidy/admin/showtime/getscreen/' + cinema_id, function(data){

        $("#screenname").empty();
        $("#screenname").append('<option value=0>Select Screen</option>');

        $.each(data,function(index,screenobj){
            $("#screenname").append('<option value="' +screenobj.screens[0].screen_id + '">' +screenobj.screens[0].screen_name +'</option>');
        });
    });
});

在控制台中,我可以看到正确的数据而没有任何错误,但我无法使用

访问 json 响应的每个字段
 screenobj.screens[0].screen_name 

需要帮助来解决这个问题。

【问题讨论】:

    标签: php jquery json ajax laravel-5.2


    【解决方案1】:

    data.screens[0].screen_name 你不需要循环

     $.each(data.screens,function(index,screenobj){
                $("#screenname").append('<option value="' +screenobj.screen_id + '">' +screenobj.screen_name +'</option>');
            });
    

    【讨论】:

    • 您的第二个选项对我来说效果很好,因为我可能会从控制器函数中获得多行,并且此代码适用于单行和多行。
    【解决方案2】:

    您可以如下所述读取屏幕数据

     $("#screenname").empty();
            $("#screenname").append('<option value=0>Select Screen</option>');
    
     $.each(data.screens,function(index,screenobj){
                $("#screenname").append('<option value="' +screenobj.screen_id + '">' +screenobj.screen_name +'</option>');
            });
    

    【讨论】:

      【解决方案3】:

      这是因为你得到的data 不是一个对象。

      您需要将dataType.get() 请求一起传递,或者使用JSON.parse() 将返回的数据转换为JS Object

      查看 here 的语法来定义 DataType 以及发送请求。

      要像这样将纯字符串解析为 JS 对象,

      var data=JSON.parse(data);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-09
        • 2016-11-22
        • 2016-11-11
        • 2017-01-16
        • 2017-01-15
        • 2017-03-27
        • 1970-01-01
        相关资源
        最近更新 更多