【问题标题】:Ajax delete request not working on remote websiteAjax 删除请求在远程网站上不起作用
【发布时间】:2013-05-22 18:23:08
【问题描述】:

在 laravel 框架中使用 php。我有一个删除请求来删除我网站上的一个文件条目,它在本地运行良好,但在我的网络服务器上却失败了。

// Ajax call 
$.ajax({
    url: BASE+'/contests/any/entries/any',
    type: 'DELETE',
    data: { 
        entry_id : entry_id 
    },
    success: function() {
        $(".entry-item#"+entry_id).remove();
    }     
});

我的路线:

Route::delete('contests/(:any)/entries/(:any)', 'entry@destroy');

控制器方法:

public function delete_destroy() {
    $entry = Entry::find(Input::get('entry_id'));
    Entry::find($entry->id)->delete();
    File::delete(URL::base() . 'public/uploads/' . $entry->filename);
}

当我在 chrome 开发人员工具中查看网络选项卡查看 ajax 请求时,我在此删除方法中发现状态 404,而它在 wamp 本地工作正常。谁能告诉我这里出了什么问题以及这个 404 not found 到底是什么意思?

这里没有找到什么?

【问题讨论】:

  • 仔细检查一下:开发工具网络选项卡中的 URL 是否应该是?你确定你的 routes.php 已经在生产服务器上更新了吗?
  • 目前它们都已更新和检查。似乎 delete 方法不适用于 ajax 调用,因为 succes 函数甚至从未运行。我已将 ajax 类型更改为 POST 并且至少它会运行,即使它没有发布到我正确的删除控制器方法。

标签: ajax request laravel eloquent laravel-3


【解决方案1】:

其实,404 not found 表示你的文件不存在,也可能是路径错误,我想可能是因为你使用了

File::delete(URL::base() . 'public/uploads/' . $entry->filename);

最有可能返回类似的东西

http://yourdomainpublic/uploads/filename

相反,您可以使用

File::delete(path('public').'uploads/' . $entry->filename);

会输出这样的东西

http://yourdomain/public/uploads/filename

【讨论】:

  • 我已经测试了一些东西,看起来从来没有对控制器进行过删除调用,所以现在里面有什么并不重要。我会尝试更新一些。
  • File::delete(URL::base() . 'public/uploads/' . $entry->filename); 应该是 File::delete(URL::base() . '/public/uploads/' . $entry->filename); URL::base() 不以斜线结尾。因此它破坏了网址。
猜你喜欢
  • 1970-01-01
  • 2018-10-30
  • 2013-03-31
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
相关资源
最近更新 更多