首页 > 解决方案 > 我正在尝试使用 ajax 将数组从控制器传递到 javascript,但它不作为数组返回,而是作为字符串返回

问题描述

这是我来自控制器的代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class AjaxController extends Controller
{

    public function showOrder($id){
        $result = DB::select('select * from menu_tbl where id = ?', array($id));
        return json_encode($result);
    }
}

这是我的javascript代码:

function addOrder(id){
    $.ajax({
        method: "GET",
        url: "/showOrder/"+id,
        success: function (data){
            alert(data["name"] + " " + data);

            //document.getElementById("name").innerHTML = data['name'];
            //document.getElementById("price").innerHTML = data['price'];
            //$("#buying").modal();
        },
    });
}

结果如下:

undefined [{"id":1,"name":"Chicken Cordon Bleu","category":"chicken","price":800,"description":"blah blah","img":"img\/mcdonalds-burger.jpg","hot":0,"spicy":0}]

data['name']返回是undefined因为我的代码有问题吗?或者DB:select不返回数组而是一个字符串。我是 Laravel 的新手。谢谢您的帮助

标签: javascriptajaxlaravel

解决方案


使您的代码如下所示。

 public function showOrder($id){
        $result = DB::table('menu_tbl')->where('id',$id)->first();
        return \Response::json($result);

    }

jquery 如下。

success: function (data){
        alert(data.name);
},

推荐阅读