вызов ajax происходит внутренняя ошибка сервера

Я делаю ajax call. И каждый раз, когда он терпит неудачу с появлением 500 Internal server error. Но в коде на стороне клиента нет ошибок.

Код JavaScript:

$.ajax({
    url:"test.php",
    type:"POST",
    dataType:"html",
    data:{
        userInput:userInput /* userInput is some text value */
    }
});

PHP-код:

<?php
    $con=mysqli_connect("localhost","root","password","test");
    $user_data=$_POST['userInput'];
    echo $user_data;
?>

каждый раз, когда я вижу эти коды ошибок в консоли:

POST XHR http://localhost/test.php и [HTTP/1.0 500 Internal Server Error 1ms]

Спросите меня, нужна ли вам дополнительная информация.

NB: В этом сообществе я нашел много вопросов. Ни один из них не решил мою проблему.


person partho    schedule 29.09.2015    source источник
comment
Откуда вы взяли, что там ошибка 500? В нем совершенно четко указано 404 Not Found, что предполагает неверный URL-адрес (localhost/test.php). Также попробуйте добавить обратный вызов успеха и ошибки к вызову $.ajax, чтобы вы могли регистрировать там больше информации.   -  person Elias Van Ootegem    schedule 29.09.2015
comment
Вы уверены, что test.php действительно находится в корне сервера?   -  person hjpotter92    schedule 29.09.2015
comment
Вы уверены, что и test.php, и файл, в котором вы используете ajax, находятся в одном каталоге?   -  person Shahzad    schedule 29.09.2015
comment
test.php и test.html находятся в одном каталоге   -  person partho    schedule 29.09.2015
comment
Может быть, вы установили какое-то правило на RewriteEngine?   -  person kosmos    schedule 29.09.2015
comment
Убедитесь, что метод POST, а GET в приложении php.   -  person Emir Marques    schedule 29.09.2015
comment
Я не создаю файл htaccess   -  person partho    schedule 29.09.2015
comment
@EmirMarques: Это пост, это понятно, если посмотреть на код. К ОП: какую ошибку вы на самом деле получаете? Первоначально это было 404, теперь вы изменили его на 500. Какой он? И снова: добавьте обратный вызов успеха/ошибки, сделайте простой console.log(arguments) и посмотрите, что передается этим функциям.   -  person Elias Van Ootegem    schedule 29.09.2015
comment
Теперь я вижу, что код ошибки — 500, поэтому проверьте свой файл php_error_log на наличие ошибок (или добавьте обратный вызов, как предложил @EliasVanOotegem).   -  person kosmos    schedule 29.09.2015
comment
@EliasVanOotegem, однажды я получил ошибку 404, но сейчас я получаю ошибку 500   -  person partho    schedule 29.09.2015
comment
FWIW: Firebug, как правило, дает вам гораздо больше информации об ошибках ajax, чем chrome или IE (если вы еще не используете его)   -  person silencedmessage    schedule 29.09.2015
comment
error:function(jqXHR){console.log(jqXHR);} выдает эту ошибку: Object {readyState: 4, getResponseHeader: .ajax/v.getResponseHeader(), getAllResponseHeaders: .ajax/v.getAllResponseHeaders(), setRequestHeader: .ajax/v.setRequestHeader(), overrideMimeType: .ajax/v .overrideMimeType(), statusCode: .ajax/v.statusCode(), прерывание: .ajax/v.abort(), состояние: .Deferred/d.state(), всегда: .Deferred/d.always(), затем : .Deferred/d.then(), еще 11… }   -  person partho    schedule 29.09.2015
comment
РЕШЕНО. Это была синтаксическая ошибка, но я был удивлен тем, что она показывала внутреннюю ошибку сервера!   -  person partho    schedule 29.09.2015
comment
@partho: синтаксическая ошибка? В следующий раз: опубликуйте, пожалуйста, фактический код, который вы используете, большинство из нас смогли бы заметить это довольно быстро. И неудивительно, что синтаксическая ошибка возвращает статус 500: неверный синтаксис означает, что php, вероятно, выдал фатальную ошибку, потому что не смог запустить неверный код. В моей книге это внутренняя ошибка сервера.   -  person Elias Van Ootegem    schedule 29.09.2015
comment
@EliasVanOotegem, извини. И спасибо за предложение.   -  person partho    schedule 29.09.2015


Ответы (2)


Я думаю, что внутренняя ошибка сервера связана с вызовом функции mysqli_connect с отключенным расширением mysqli. Попробуйте phpifo() убедиться, что расширение mysqli включено

person Shanavas M    schedule 29.09.2015
comment
Библиотека клиентского API версии 5.5.44 Активные постоянные ссылки 0 Неактивные постоянные ссылки 0 Активные ссылки 0 Версия заголовка клиентского API 5.5.44 MYSQLI_SOCKET /var/run/mysqld/mysqld.sock Директива Локальное значение Основное значение mysqli.allow_local_infile Вкл. Вкл. mysqli.allow_persistent Вкл. На mysqli.default_host нет значения нет значения mysqli.default_pw нет значения нет значения mysqli.default_socket /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock mysqli.default_user нет значения нет значения mysqli.max_links Не ограничено Не ограничено mysqli.max_persistent Не ограничено Не ограничено mysqli.reconnect Выкл. Выкл. - person partho; 29.09.2015
comment
вы правильно подозревали. комментируя mysqli_connect, я не вижу ошибки. mysqli не включен. Я пытаюсь включить его. Помоги мне, пожалуйста? Использование ubuntu 14.04 LTS - person partho; 29.09.2015
comment
Найдите ответ здесь stackoverflow.com/ вопросы/10769148/ - person Shanavas M; 29.09.2015

Вы можете поймать свою ошибку при выполнении обратного вызова.. пример:

$.ajax({
    url:"test.php",
    type:"POST",
    dataType:"html",
    data:{
        userInput:userInput /* userInput is some text value */
    }
}).success(function() {
    window.alert('Ajax completed successfully');
}).error(function() {
    window.alert('An error has occurred');
});
person Jonas Sciangula Street    schedule 29.09.2015