$jquery.post() PHP и Mysql

#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)));
?>