我正在尝试为数据库中的用户更新字段,并且我正在尝试使用ajax。我有一个资源(粉丝),在我的FansController中,我有一个函数update($ id):
我像这样使用ajax调用:
var full_name = $("#user_name").val();
var full_location = $("#user_city").val();
request = $.ajax({
url: "http://url.com/fans/update",
type: "post", success:function(data){console.log(data);},
data: {'full_name': full_name, 'full_location': full_location} ,beforeSend: function(data){
console.log(data);
}
});
full_name和full_location越来越好。我不确定它们是否正确传递给函数。 console.logs可以很好地记录日志,但是它们没有在控制台中显示正确的数据(它只是打印整个源代码)。
更新功能:
public function update($id)
{
//get saved info from fan profile
$full_name = Input::get('full_name');
$full_location = Input::get('full_location');
//echo var_dump($full_name);
$split_name = explode(" ", $full_name);
$first_name = $split_name[0];
$i=0;
foreach ($split_name as $name) {
if($i > 0) {
$last_name = $name[i] + " ";
}
$i++;
}
$trimmed_last_name = trim($last_name);
//find user
$fan = Fan::where('id', '=', $id)->first();
$fan->first_name = $first_name;
$fan->last_name = $trimmed_last_name;
$fan->save();
}
数据库未更新,因此我假设未调用该函数(即使ajax显示成功)。我有什么想念的吗?谢谢。
最佳答案
转到终端/命令提示符,然后键入并运行以下命令:
php artisan routes
这将返回如下信息(有关在应用程序中声明的所有路由的详细信息):
+--------+---------------------------------------------------------------+---------------+-------------------------------+----------------+---------------+
| Domain | URI | Name | Action | Before Filters | After Filters |
+--------+---------------------------------------------------------------+---------------+-------------------------------+----------------+---------------+
| | GET posts | posts.index | PostController@index | | |
| | GET posts/c | posts.create | PostController@create | | |
| | POST posts | posts.store | PostController@store | | |
| | GET posts/{posts} | posts.show | PostController@show | | |
| | GET posts/{posts}/edit | posts.edit | PostController@edit | | |
| | PUT posts/{posts} | posts.update | PostController@update | | |
| | PATCH posts/{posts} | | PostController@update | | |
| | DELETE posts/{posts} | posts.destroy | PostController@destroy | | |
+--------+---------------------------------------------------------------+---------------+-------------------------------+----------------+---------------+
从此结果中,找出适合用于该方法的
url
。在这种情况下,对于使用update
请求PATCH
的method
方法,您可以使用如下所示的内容:posts/10
由于它是资源控制器,因此您可以使用以下内容:
$.ajax({
url: "fans/10", // 10 is user id to update, for example
type: "post",
data: { full_name:full_name, full_location:full_location, _method:"PATCH" },
success:function(data){
console.log(data);
}
});
因此,您的
update
方法将被匹配,因为您的update
方法如下所示:public function update($id)
{
//...
}
根据您的
url
,您应该声明以下(资源)路由:Route::resource('fans', 'FansController');
如果将
JS
代码保存在一个单独的文件中,则还可能要检查this article,这是关于如何将模型对象从服务器发送到客户端(作为JavaScript
对象),这将有助于理解这一点。即将id
从服务器发送到客户端,因此您可以在id
函数中使用JS
。