2013-05-27 5 views
0

Использование php с рамкой laravel. У меня есть запрос на удаление, чтобы удалить запись файла на моем веб-сайте, он работает нормально локально, но на моем веб-сервере он не работает.Запрос на удаление Ajax не работает на удаленном веб-сайте

// 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)', '[email protected]'); 

Контроллер метод:

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

Когда я проверяю АЯКС запросов просмотра вкладку сети в хромированных инструментов разработчика я получаю статус 404 не найден на этом удалить метод, пока он работает нормально в wamp. Может ли кто-нибудь сказать мне, что здесь не так, и что этот 404 не нашел точно?

Что конкретно не найдено здесь?

+0

Просто дважды проверяйте: URL-адрес вкладки сети инструментов deve - это тот, который должен быть? И вы абсолютно уверены, что ваш route.php обновлен на производственном сервере? – Franz

+0

Все они обновлены и проверены на данный момент. Кажется, что метод delete не работает для вызова ajax, потому что функция succes никогда не запускается. Я изменил тип ajax на POST и, по крайней мере, он будет работать, даже если он не отправит мой метод контроллера удаления. –

ответ

1

На самом деле, 404 не найден означает, что файл не существует, и это может быть также из-за неправильного пути, и я думаю, что это может быть потому, что вы используете

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

который возвращает наиболее вероятно, что-то вроде

http://yourdomainpublic/uploads/filename 

Вместо этого, вы можете использовать

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

Что ж плохо вывести что-то вроде этого

http://yourdomain/public/uploads/filename 
+0

Я протестировал некоторые вещи, и похоже, что вызов delete никогда не поступает в контроллер, поэтому не имеет значения, что там на данный момент. Я попытаюсь обновить еще кое-что. –

+0

'Файл :: delete (URL :: base(). 'Public/uploads /'. $ Entry-> filename);' должен быть 'File :: delete (URL :: base(). '/ Public/uploads/'. $ entry-> filename); '' URL :: base() 'не заканчивается косой чертой. поэтому он нарушает URL. – itachi

Смежные вопросы