Javascript 如何使用jQuery Tabledit和Laravel更新表行

Javascript 如何使用jQuery Tabledit和Laravel更新表行,javascript,jquery,ajax,laravel,tabledit,Javascript,Jquery,Ajax,Laravel,Tabledit,在Laravel中,我需要将行ID指定为请求URL的一部分,以便对其进行更新,例如: 问题在于使用jQuery Tabledit时,因为它在初始化(页面加载)时需要URL 所以问题是,如何在jQuery Tabledit中将当前行ID设置为URL HTML: # 名字 姓 @如果($contacts) @foreach($contacts作为$contact) {{$contact->id} {{$contact->first_name} {{$contact->last_name} @end

在Laravel中,我需要将行ID指定为请求URL的一部分,以便对其进行更新,例如:

问题在于使用jQuery Tabledit时,因为它在初始化(页面加载)时需要URL

所以问题是,如何在jQuery Tabledit中将当前行ID设置为URL

HTML:


#
名字
姓
@如果($contacts)
@foreach($contacts作为$contact)
{{$contact->id}
{{$contact->first_name}
{{$contact->last_name}
@endforeach
@恩迪夫

JavaScript:

<script>
$( document ).ready(function() {
    $('#contactsTable').Tabledit({
        url: 'http://localhost/contacts/22',
        saveButton: false,
        columns: {
            identifier: [0, 'id'],
            editable: [[1, 'first_name'], [2, 'last_name']]
        }
    });
});

$(文档).ready(函数(){
$(“#contactsTable”).Tabledit({
网址:'http://localhost/contacts/22',
saveButton:false,
栏目:{
标识符:[0,'id'],
可编辑:[[1,‘姓’],[2,‘姓’]]
}
});
});


如您所见,url:“”是问题所在。上面的代码按预期工作,但仅更新第22行,因为jQuery Tabledit URL已固定编码到第22行。

我假设您的jQuery its位于当前刀片服务器中。因此,当您使用扩展名
.blade.php.

因此,您只需使用blade,使用括号回显
联系人id

<script>
$( document ).ready(function() {
    $('#contactsTable').Tabledit({
        url: 'http://localhost/contacts/'+{!! $contact->id !!},
        saveButton: false,
        columns: {
            identifier: [0, 'id'],
            editable: [[1, 'first_name'], [2, 'last_name']]
        }
    });
});

在服务器端解决了这个问题,创建了一个单独的路由,仅用于通过Tabledit更新数据,该路由不需要将行ID作为URL的一部分(我在POST请求中包含了它):

控制器:

use Illuminate\Http\Request;

class ContactsController extends Controller
{
    ...

    public function updateTable(Request $request)
    {
        // Save the data.
        $contact = Contact::find($request->input('id'));
    }

    ...
}

但是如果知道客户端(jQuery Tabledit)是否有任何方法,那还是很好的。

我不能在Tabledit初始化时(文档准备就绪时)添加联系人ID,因为我们不知道用户要编辑哪一行。第二种方法的答案与此类似,即使我捕捉到“click”事件,我也需要重新初始化整个表$(“#contactsTable”).Tabledit(),这是一个不可能的。这很公平,但不管更新的是哪一行用户!您只需获取当前联系人id,这样当您在后端收到post数据时,您就可以验证和检查哪些用户已更新,哪些未更新!在您的jquery中,您已经发布了一个post请求,这显然是行不通的,因为你们中的第一个没有csrf!我看不出你是怎么把那个“id”给控制器的!为了强调实际问题,我简化了上面的代码。原始代码确实有一个csrf令牌和一个隐藏的输入字段“_method=PUT”来欺骗Laravel。
$('#contactsTable').on('click', function(){
   let contacts = {!! $contacts->toJson() !!};

   // now you can access all attributes that are defined in Contacts model 
   // example contact id 

   let contact_id = contacts.id; 


}
Route::post('/contacts/updatetable','ContactsController@updateTable');
use Illuminate\Http\Request;

class ContactsController extends Controller
{
    ...

    public function updateTable(Request $request)
    {
        // Save the data.
        $contact = Contact::find($request->input('id'));
    }

    ...
}