Использование AJAX для передачи переменной в PHP и повторного получения тех, кто использует AJAX

Я хочу передать значения PHP script, поэтому я использую AJAX для их передачи, и в той же функции я использую другой AJAX для извлечения этих значений.

Проблема в том, что второй AJAX не извлекает никакого значения из файла PHP. Почему это? Как сохранить переменную, переданную на PHP script, чтобы второй AJAX мог ее получить?

Мой код выглядит следующим образом:

AJAX CODE:

$(document).ready(function() {    
    $("#raaagh").click(function(){    
        $.ajax({
            url: 'ajax.php', //This is the current doc
            type: "POST",
            data: ({name: 145}),
            success: function(data){
                console.log(data);
            }
        });  
        $.ajax({
            url:'ajax.php',
            data:"",
            dataType:'json',
            success:function(data1){
                var y1=data1;
                console.log(data1);
            }
        });
    });
});

PHP CODE:

<?php
$userAnswer = $_POST['name'];    
echo json_encode($userAnswer);    
?>

Ответ 1

Используйте dataType:"json" для json данных

$.ajax({
     url: 'ajax.php', //This is the current doc
     type: "POST",
     dataType:'json', // add json datatype to get json
     data: ({name: 145}),
     success: function(data){
         console.log(data);
     }
});  

Читать документы http://api.jquery.com/jQuery.ajax/

Также в PHP

<?php
  $userAnswer = $_POST['name']; 
  $sql="SELECT * FROM <tablename> where color='".$userAnswer."'" ;
  $result=mysql_query($sql);
  $row=mysql_fetch_array($result);
  // for first row only and suppose table having data
  echo json_encode($row);  // pass array in json_encode  
?>

Ответ 2

Не нужно использовать вторую функцию ajax, вы можете вернуть ее на успех внутри функции, другая проблема здесь: вы не знаете, когда закончился первый вызов ajax, тогда даже если вы используете SESSION, вы не сможете ее получить в течение второго вызова AJAX.

SO, я рекомендую использовать один вызов AJAX и получить значение с успехом.

Пример

: при первом вызове ajax

    $.ajax({
        url: 'ajax.php', //This is the current doc
        type: "POST",
        data: ({name: 145}),
        success: function(data){
            console.log(data);
            alert(data);
            //or if the data is JSON
            var jdata = jQuery.parseJSON(data);
        }
    }); 

Ответ 3

$(document).ready(function() {
    $("#raaagh").click(function() {
        $.ajax({
            url: 'ajax.php', //This is the current doc
            type: "POST",
            data: ({name: 145}),
            success: function(data) {
                console.log(data);
                $.ajax({
                    url:'ajax.php',
                    data: data,
                    dataType:'json',
                    success:function(data1) {
                        var y1=data1;
                        console.log(data1);
                    }
                });
            }
        });
    });
});

Используйте вот так: сначала сделайте ajax-вызов для получения данных, тогда ваша функция php вернет результат, который u получит в данных и передаст эти данные новому вызову ajax

Ответ 4

вам нужно передать значения с одинарными кавычками

$(document).ready(function() {    
    $("#raaagh").click(function(){    
        $.ajax({
            url: 'ajax.php', //This is the current doc
            type: "POST",
            data: ({name: '145'}), //variables should be pass like this
            success: function(data){
                console.log(data);
                           }
        });  
        $.ajax({
    url:'ajax.php',
    data:"",
    dataType:'json',
    success:function(data1){
            var y1=data1;
            console.log(data1);
            }
        });

    });
});

попробуйте, это может сработать.......

Ответ 5

В вашем PhP файле будет переменная с именем $_REQUEST и она содержит массив со всеми данными, отправляемыми с Javascript на PhP с использованием AJAX.

Попробуйте следующее: var_dump($_REQUEST); и проверьте, получаете ли вы значения.