#javascript #php #jquery #json #.post
#javascript #php #jquery #json #.post
Вопрос:
Итак, я наполовину заставил ajax ( $.post
) jQuery работать. Но по какой-то причине мне не удалось найти подходящую онлайн-статью, которая объяснила бы мне, как PHP извлекает отправленные данные ajax. Я нашел кое-что в json_decode, но после того, как я сделал это, чтобы в основном расшифровать его, это не сработает (и да, я использую json для $.post
команды).
Вот мой код javascript
$.post("notificationNum.php", {"user":"1"},
function(data){
$(".example-number").html(data.amount);
}, "json");
Вот мой PHP-код
<?php
session_start();
//link to db info here
$user_id_got = json_decode($_REQUEST['user']);
$checknoti = mysql_query("SELECT * FROM notifications WHERE notification_users = '".$user_id_got."' AND notification_viewed= '0'");
echo json_encode(array("amount"=>mysql_num_rows($checknoti)));
?>
Имейте в виду, я также пытался использовать $_POST
команду вместо $_REQUEST
. Есть идеи, как отправить данные в файл PHP, чтобы я мог его использовать?
Комментарии:
1. Попробуйте
print_r( $_POST )
.2. Вызывается
notificationNum.php
ли это в первую очередь? Можете ли вы сделать что-то вродеvar_dump
, чтобы увидеть содержимое$_REQUEST
? Может быть, попробуйте использовать такой инструмент, как Fiddler ( fiddler2.com/fiddler2 ), чтобы увидеть, какие данные передаются обратно и обратно на сервер.3. notificationNum.php если его вызывают, я уже кое-что сделал, чтобы убедиться, что он вызывается, и это работает. Проблема заключается в том, чтобы просто получить информацию и получить ее в PHP.
4. Ваш код предполагает, что jquery фактически отправляет строку JSON. Это не так, вы просто создаете обычную систему POST, поэтому передача этих данных через json_decode в PHP вернет null (проверьте json_last_error() для подтверждения).
Ответ №1:
«json» в вашем вызове jQuery — это то, как ваш php должен записывать свои выходные данные, а не то, как jQuery отправляет его. Используйте обычный $_REQUEST в вашем php:
$user_id_got = $_REQUEST['user'];
Комментарии:
1. На самом деле, подождите, это сработало, но была проблема с моим кодом. Однако есть ли способ получить сеанс на php и передать его через ajax-вызов jQuery?
2. У меня есть $ _SESSION[«] на месте в том же самом файле, в котором выполняется $.post. Могу ли я отправить информацию в $ _SESSION через $.post? Например…. $.пост(«notificationNum.php», {«пользователь»:<?php $_SESSION[‘here’]; ?>}, функция(данные){ $(«.пример-число»).HTML(либо сведения.суммы); }, «JSON с»);
3. @Majed: Сеанс уже находится на сервере, зачем вам передавать его с клиента на сервер??
4. Потому что, notificationNum.php по какой-то причине я не получаю к нему доступа, поэтому вместо этого мне нужно передать его в файл.
5. Хорошая идея, спасибо за помощь, вы дали мне правильный ответ, таким образом, вы будете вознаграждены за это. 🙂
Ответ №2:
попробуйте это
notificationNum.php
<?php
//link to db info here
$user_id_got = intval($_POST['user']);
$checknoti = mysql_query("SELECT * FROM notifications WHERE notification_users = '".$user_id_got."' AND notification_viewed= '0'");
echo json_encode(array("amount"=>mysql_num_rows($checknoti)));
?>