#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, поэтому я, должно быть, делаю это неправильно.