使用Ajax调用传递ID的最佳方法是什么?

时间:2016-11-09 09:52:20

标签: php jquery ajax codeigniter-3

我是AJAX的新手。

传递ID以更新产品时。对此有任何解释。提前谢谢。

这个

$.ajax({
   type: 'post',
   url: 'my_controller/update_product_exe/' + id, //This line
   dataType: 'json'
});

到此......

$.ajax({
   type:'post',
   url: 'my_controller/update_product_exe',
   dataType: 'json',
   data: {id: id} // this line
});

3 个答案:

答案 0 :(得分:3)

区别在于url本身。将id附加到第一个url会更改它,因此会将请求发送到该特定url。但是,它不会在请求期间发送任何数据。例如:

// let's say id = "1234"
$.ajax({
   type: 'post',
   url: 'my_controller/update_product_exe/' + id, // This will be 'my_controller/update_product_exe/1234'
   dataType: 'json'
});

第二个:

$.ajax({
   type:'post',
   url: 'my_controller/update_product_exe',
   dataType: 'json',
   data: {id: id} // This will be {id: "1234"}
});

在第二个,你传递数据;在第一个,您只是通过在其中添加一些字符串来修改url

答案 1 :(得分:2)

如果你只是想知道两个ajax请求的区别而不是:

在第一次请求中,您没有在ajax请求中传递数据,而是在URL中发送ID,在CI控制器中,您将通过使用URL Segments获得此ID。

在第二次请求中,您是在ajax请求中发送数据,因此您可以使用 <div class="panel-body"> RenderImage(x.Image) <div class="pull-right" style="margin-top: 0;> Date() </div>

在控制器中获取数据

现在,哪一个更好,两者都有差异,当你需要使用ajax传递一些输入值时,你可以选择第二个。您可以在此请求中发送多个数据。

您还可以使用第二个请求来实现第一个请求目标,在这种情况下,您只需在ajax数据中传递ID即可。您可以发送多个数据,但必须使用分段URL。

答案 2 :(得分:1)

从概念上讲,您在第一个示例中使用GET,在第二个示例中使用POST。 HTTP verbs具有含义,POST用于向服务器发送信息。即使你可以通过使用GET获得id,这也不会使它在语义上正确。目前你只有一个大小有限且只有一个参数的id,但即使在一个小应用程序中,人们通常会向服务器发送几个参数,也许还有一些kb的数据。 GET参数的大小有限,POST更适合这种情况。

出于所有这些原因,使用POST的第二个版本是正确的。

以下是关于GET和POST之间差异的一些额外资源。

http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post

http://www.diffen.com/difference/GET-vs-POST-HTTP-Requests

What is the difference between POST and GET?

When should I use GET or POST method? What's the difference between them?