我正在使用json数组在成功部分将变量从控制器传递到ajax,但是问题是如果我在控制器中使用数组,则没有数据
ajax
$(function(){
$('.Item_root').on("click", function () {
var productid = $(this).data('id');
$.ajax({
url: '/get_products/' + productid,
type: "get",
success: function (data)
{
$('#menu-item').modal('show');
alert(data.id);
$('#product_title').html(data.product_name);
}
});
});
});
控制器
public function getProducts($productid)
{
$data = Product::findOrFail($productid);
$categories = Product::all();
return Response::json(array(
'data' => $data,
'categories' => $categories,
));
}
答案 0 :(得分:0)
尝试将dataType: 'json'
添加到您的请求中以自动反序列化响应。
此外,考虑将整个响应都转储到控制台,或者在开发人员工具中检查网络响应,以比使用alert(...)
更好地了解正在发生的事情。
$(function(){
$('.Item_root').on("click", function () {
var productid = $(this).data('id');
$.ajax({
url: '/get_products/' + productid,
type: "get",
dataType: "json", // this will deserialize the response
success: function (data) {
console.log(data); // dump the entire response to the console
$('#menu-item').modal('show');
$('#product_title').html(data.product_name);
}
});
});
});
答案 1 :(得分:0)
尝试一下:
页面加载后无需使用,请使用此表单来使用将始终有效的$(document)
。
$(document).on("click", '.Item_root', function () {
var productid = $(this).data('id');
$.ajax({
url: '/get_products/' + productid,
type: "get",
success: function (data)
{
//$('#menu-item').modal('show');
console.log(data); //to verific the data that is coming
//$('#product_title').html(data.product_name);
}
});
});
控制器:
use Illuminate\Http\Request;
public function getProducts(Request $productid)
{
$data = Product::findOrFail($productid);
$categories = Product::all();
return Response::json(array(
'data' => $data,
'categories' => $categories,
));
}
您需要使用该请求,请立即尝试并签出。
还要检查路由是否正确,因为您的方法有一个名称,而在Ajax中则使用了另一个名称:Ajax- get_products /方法- getProducts
答案 2 :(得分:0)
简单的方法是使用 data.categories.id等等。就是这样