500 Ошибка запроса внутренней службы с Ajax Post, javascript

#javascript #jquery #ajax #post

#javascript #jquery #ajax #Публикация

Вопрос:

В javascript у меня есть следующее:

 var jobData = {
           "SquareN": rectangle.getBounds().getNorthEast().lat,
               "SquareE": rectangle.getBounds().getNorthEast().lng,
               "SquareS": rectangle.getBounds().getSouthWest().lat,
               "SquareW": rectangle.getBounds().getSouthWest().lng,
               "SiteName": $("#jobname").val(),
               "SiteType": 3,
               "EstFlags": $("#numberFlags").val()
          };
    $.ajax({
        url: "send_jobsite.php",
        type: "POST",
        data: {jobSite: jobData},

    });
  

Затем в моем php-файле я выполняю $ _POST [‘jobSite’], но получаю ошибку внутренней службы 500 из сообщения. Я не уверен, в чем причина ошибки или как ее исправить. Это моя первая попытка выполнить ajax post для отправки данных в скрипт сервера php, который затем возьмет эти данные и отправит их в базу данных mysql.

Любые советы были бы замечательными.

Php:

 if($con->connect_errno) {
  printf("Connect Failed: %sn", $con->connect_error);
  exit();
}

echo $_POST['jobSite'];

$con->close();

?>
  

Первая строка перед тем, что я опубликовал, — это соединение с базой данных, которое является правильным, поэтому не включалось.

Комментарии:

1. можете ли вы опубликовать свой php-скрипт?

2. В файле могут быть некоторые ошибки send_jobsite.php , вот почему вы получили внутреннюю ошибку сервера.

3. Как всегда бывает с ошибками на стороне сервера; проверьте журнал ошибок

4. Какая ошибка регистрируется в инструментах отладки Chrome? Это просто выдает мне ошибку внутренней службы 500.

5. Ваш журнал ошибок HTTP-сервера, то, что выполняется send_jobsite.php

Ответ №1:

Похоже, проблема связана с вашим data форматом. Когда вы отправляете что-то подобное (как вы есть)

 data: {foo: {
    a: "a",
    b: "b"
}}
  

jQuery будет кодировать данные как

 foo[a]=aamp;foo[b]=b
  

или расшифровано

 foo[a]=aamp;foo[b]=b
  

который может быть прочитан PHP как ассоциативный массив, т.е.

 $foo_a = $_POST['foo']['a'];
$foo_b = $_POST['foo']['b'];
  

Скорее всего, вы неправильно обращаетесь к $_POST данным. Вы должны использовать что-то вроде

 $_POST['jobSite']['SquareN']
  

и т.д. В качестве альтернативы измените свой код JavaScript на

 data: jobData,
  

и получить доступ к свойствам через

 $_POST['SquareN']
  

и так далее.

Комментарии:

1. итак, у меня есть jobData как объект JSON, затем я сделал data: jobData, затем в моем php я делаю $ _POST[‘SquareN’], но я все еще получаю ошибку внутренней службы. Я думаю, что это определенно мой запрос к базе данных, чтобы добавить информацию в базу данных. Я не совсем уверен в правильном синтаксисе для запроса к базе данных, я полагаю

2. @TylerDahle не существует такого понятия, как объект JSON

Ответ №2:

Похоже, что запрошенные вами jobData имеют неправильный формат.Я предполагаю, что вы пытаетесь отправить данные в формате JSON. Пожалуйста, попробуйте что-то вроде приведенных ниже данных.

var jobData = ‘{«SquareN»: «ff»,»SquareE»: «dd»,»SquareS»: «aa»,»SquareW»: «bb», «SiteName»: «ll»,»SiteType»: 3, «EstFlags»: «nn»}’;

А также проверьте на send_jobsite.php запишите, какие входные данные вы получаете.

Комментарии:

1. Похоже, что OP определенно хочет получить доступ к данным как обычно application/x-www-form-urlencoded $_POST , поэтому я не думаю, что использование созданной вручную строки JSON является правильным ответом

2. Изменил jobData на ваше предложение, просто чтобы попробовать, и не получил ошибку. Но попытка выполнить запрос к моей базе данных для вставки данных в таблицу вызывает ошибку 500, поэтому я, должно быть, делаю это неправильно.