Laravel4中的简单ajax
我有以下代码 ajaxLaravel4中的简单ajax,ajax,laravel-4,Ajax,Laravel 4,我有以下代码 ajax //ajax edit button $('.edit_button').on('click', function(e) { e.preventDefault(); var id_produk = $(this).attr('id'); $.ajax({ type : "POST", url : "editproduk", data : id_produk, dataType: '
//ajax edit button
$('.edit_button').on('click', function(e) {
e.preventDefault();
var id_produk = $(this).attr('id');
$.ajax({
type : "POST",
url : "editproduk",
data : id_produk,
dataType: 'JSON',
success : function(data) {
alert('Success');
console.log(data);
},
error: alert('Errors')
});
});
我总是收到messagebox错误不知道我在哪里失踪,
因为在chrome-inspect-element-console中没有给出任何线索 我的路线
Route::post('/account/editproduk', array(
'as' => 'edit-produk-post',
'uses' => 'AccountController@postEditProduk'
));
我的控制器
public function postEditProduk() {
if (Request::ajax()) {
return "test test";
}
}
扩展问题
在使用
return Response::json()
之后,我很好地运行了脚本,如下所示
$id_produk = Input::get('id_produk');
$produk = Produk::findOrFail($id_produk);
return Response::json($produk);
并通过此脚本在视图中访问它
success : function(data) {
alert('Success');
console.log(data["name-produk"]);
}
但是如果我想返回类似于json的数组
$id_produk = Input::get('id_produk');
$produk = Produk::findOrFail($id_produk);
$spesifikasi = SpesifikasiProduk::where('id_produk', '=', $id_produk);
return Response::json(array($produk, $spesifikasi));
我无法在这样的视图中访问它
success : function(data1, data2) {
alert('Success');
console.log(data1["name-produk"] - data2["title-spek"]);
}
如何访问json数组
扩展问题更新
Route::post('/account/editproduk', array(
'as' => 'edit-produk-post',
'uses' => 'AccountController@postEditProduk'
));
如果我错了,请更正我的脚本
因为我对解释有点困惑
这是退货的正确方法吗
Response::json(array('myproduk' => 'Sproduk', 'data2' => 'testData2'));
结果
console.log(produk["myproduk"]);
--------------------------------
Object {id_produk: 1, nama_produk: "produk1", deskripsi: "desc_produk"
console.log(produk["data2"]);
--------------------------------
testData2
我仍然不知道如何在控制器中打印
my_produk
array中的nama_produk
,在ajax请求等待json数据时返回文本,看看这些代码行,我想你应该会得到答案:
if(Request::ajax()) {
$province = Input::get('selectedProvince');
//Get all cites for a province
if ($cityList = City::where('province_id','=', $province)) {
return Response::make($cityList->get(['id', 'name']));
}
return Response::json(array('success' => false), 400);
}
问题1: 为什么这段代码不发送JSON数据回来
public function postEditProduk() {
if (Request::ajax()) {
return "test test";
}
}
回答:,因为这不是返回JSON数据的正确方法。
从Laravel 4文档中,将JSON数据发送回链接。因此,正确的代码为:
public function postEditProduk() {
if (Request::ajax()) {
return Response::json("test test");
}
}
问题2:
为什么我无法访问data1
和data2
success : function(data1, data2) {
alert('Success');
console.log(data1["name-produk"] - data2["title-spek"]);
}
回答:,因为这不是捕获JSON数据的正确方法。正确的发送方式在中给出
正如您所看到的,json
方法将string
或array
作为第一个参数。因此,您需要发送第一个参数本身中的所有数据(您正在这样做)。由于只传递了一个参数,因此在javascript中只需要捕获一个参数。您正在捕获2个参数
根据$produk
和$spesifikasi
是什么,您的数据将显示在一个数组中。假设$produk
是一个字符串,$spesifikasi
是一个数组。然后javascript端的数据将如下所示:
[
[0] => 'value of $produk',
[1] => array [
[0] => 'value1',
[1] => 'value2'
]
]
最好是打印日志,记录所有数据并了解其结构。将代码更改为:
success : function(data) {
console.log(data.toString());
}
这将打印您的整个数据,然后您可以查看数据的结构并相应地访问它。如果您需要在控制台上打印数据的帮助,请用谷歌搜索,或者直接告诉我
我真诚地希望我已经清楚地解释了你的疑问。祝你今天愉快
编辑
扩展问题答案:
替换此行:
$spesifikasi = SpesifikasiProduk::where('id_produk', '=', $id_produk);
为此:
$spesifikasi = SpesifikasiProduk::where('id_produk', '=', $id_produk)->get();
如果不调用get()
方法,laravel将不会返回任何值
然后以如下方式访问javascript中的数据:
console.log(JSON.stringify(data));
通过这种方式,您将了解数据的结构,并可以通过以下方式访问数据:
data[0]["some_key"]["some_other_key"];
我在laravel 5中,所以这可能对您不起作用,但我使用
return-response::JSON(array('successMessage'=>'Success','payload'=>$response)),发送JSON响应代码>。您还可以将日志放在控制器中,这样我们就可以确定这是客户端的问题,而不是服务器端的问题。另外,如果您的按钮.edit\u按钮
正在提交某些表单,您可能需要在发送ajax请求之前执行e.preventDefault()
函数。执行上述步骤,并让我知道Werelarvel随日志外观提供的结果。查看config文件夹中的app.php。必须有一个名为Log的外观。在顶部的控制器中写入使用light\Support\Facades\Log
,在任何需要记录的地方只需写入Log::error(“某些日志”)代码>这是在laravel 5中。不知道4,但会检查是否找不到它。另外,您之前提到,当您执行我的代码时,会出现500个错误。你能说明原因吗?可能您忘记定义$response
,因此出现了错误。检查我的答案。希望你喜欢。如果还有其他事情,请告诉我。:)让我们看看我的扩展问题等一下…有点困惑我会更新我的问题