【问题标题】:Using AJAX to pass variable to PHP and retrieve those using AJAX again使用 AJAX 将变量传递给 PHP 并再次使用 AJAX 检索这些变量
【发布时间】:2013-03-16 06:00:23
【问题描述】:

我想将值传递给 PHP 脚本,所以我使用 AJAX 来传递这些值,并且在同一个函数中,我使用另一个 AJAX 来检索这些值。

问题是第二个 AJAX 没有从 PHP 文件中检索任何值。为什么是这样?如何存储传递给 PHP 脚本的变量,以便第二个 AJAX 可以检索它?

我的代码如下:

AJAX 代码:

$(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 代码:

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

【问题讨论】:

  • 不需要第二个ajax,你可以在第一个ajax本身获取数据。
  • 第一个AJAX可以用来返回数据。

标签: php jquery ajax


【解决方案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  
?>

【讨论】:

  • 查看数据是我发送给 php 的值。如果我根据我发送的变量从 php 中检索另一个值怎么办。例如,我发送值蓝色,在 php 中我使用 mysql 条件 select * from cars where color="blue";我将如何使用相同的 ajax 获得这个值?
  • 检查上面我已经改了。
  • 所以你是说单个 AJAX 调用甚至会给我数据库中的 json_encoded 值?但是 AJAX 中的数据不是我们传递给 PHP 脚本的值吗?
  • 是的,在ajax 的一次调用中,您可以从database 获得data。您也可以在ajax 中的once 中传递multiple data,例如data:{color:'blue',name:'ABC',age:15}
  • 假设你在ajax 中传递data:{color:'blue',name:'ABC',age:15} 这个数据,在服务器端你的查询可以是:$sql="SELECT * FROM &lt;tablname&gt; where color='".$_POST['color']."' and name='".$_POST['name']."' and age='".$_POST['age']."'";
【解决方案2】:

不需要使用第二个 ajax 函数,你可以在一个函数中返回成功,这里的另一个问题是你不知道第一个 ajax 调用何时完成,那么,即使你使用 SESSION 也可能无法得到它在第二次 AJAX 调用中。

所以,我建议使用一次 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);
        }
    }); 

【讨论】:

  • 那么如何从php文件中调用数据呢?因为我打算做的是传递这个变量,以便它可以在 mysql 查询中用于从数据库中获取数据。您能否帮助我了解如何在第一个 ajax 本身上调用数据?有什么方法可以将传递的值存储在 php 脚本中,以便它可以继续查询我是否保持超时。
  • 查看示例,一旦您将参数发送到您的 PHP 然后处理它,同时,最后,您可以将输出打印回 ajax...
  • 查看数据是我发送给 php 的值。如果我根据我发送的变量从 php 中检索另一个值怎么办。例如,我发送值蓝色,在 php 中我使用 mysql 条件 select * from cars where color="blue";我将如何使用相同的 ajax 获得这个值?
  • 是的,在同一个 php 文件中回显输出,并使用上面的代码 :)
【解决方案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 函数将返回您将在数据中获取的结果并将该数据传递给新的 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 的变量,它包含一个数组,其中包含使用 AJAX 从 Javascript 发送到 PhP 的所有数据。

      试试这个:var_dump($_REQUEST); 并检查您是否收到了这些值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-21
        • 1970-01-01
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-14
        相关资源
        最近更新 更多