如何使用Ajax和JSON从PHP文件中访问变量? (数据未定义错误)

时间:2016-03-25 07:45:53

标签: javascript php json ajax

我有这个PHP文件:

JSONtest.php

<?php
$a=5;
echo json_encode($a);
//This converts PHP variable to JSON.
?>

我想使用Ajax和JSON来警告这个变量的值,为此我编写了这个脚本:

learningJSON.php

$(document).ready(function(){
    $("button").click(function(){
    $.ajax({
        url: 'JSONtest.php',
        type: 'POST',
        data: data,
        dataType: 'json',
        success: function(result){
            alert(result);
            },
        error: function(){
            alert("Error");
            }
        });
    });
});

但是当我点击按钮时,我收到以下错误消息: learningJSON.php:14未捕获的ReferenceError:未定义数据

我在做什么错?我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

<?php
$a=5;
echo json_encode($a);
//This converts PHP variable to JSON.
?>

不,它没有。将简单数字转换为JSON的重点是什么?它保持为5

现在真正的问题。是的,您的data变量未在JavaScript代码中的任何位置定义。如果您没有要发送的数据,请删除该参数。

但是,如果您仍想传递某些数据,请相应地进行定义。例如

data: { fname: "John", lname: "Doe" }

现在让我们在您的下一个练习中说您想要发布表单数据,您可以使用名为 serialize() 的好功能。这将从您的表单中获取所有可用的字段,并将其与此请求一起发送。

data : $("#formID").serialize()

答案 1 :(得分:1)

未定义数据变量,您可以删除

Php文件

<?php
$a = $_REQUEST['number'];
echo json_encode($a);
//This converts PHP variable to JSON.
?>

Javascript文件

$(document).ready(function(){
    $("button").click(function(){
    $.ajax({
        url: 'JSONtest.php',
        type: 'POST',
        //data: {'number' : 10}, //this is when you need send parameters to the call, uncomment to send it parameters
        dataType: 'json',
        success: function(result){
            alert(result);
            },
        error: function(){
            alert("Error");
            }
        });
    });
});

答案 2 :(得分:0)

我认为这个对你来说应该是完美的。 我们需要3个文件

  1. 的index.php
  2. login.js
  3. 的login.php
  4. 这意味着当用户通过从表单输入[index]收集所有数据时,在login.js中提交运行ajax进程脚本[index.php]的[login.js]脚本js文件[json]。 php]并发送并运行脚本login.php ... 这是ajax&amp;强大的脚本JSON

    检查以下代码

    的index.php

    <!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <script src="login.js" type="text/javascript" charset="utf-8">  </script>
    </head>
        <body>      
    
            <form method="post" id="login" name="login">
                Email: <input type="email" id="log-mail" name="log-mail"  > <br />
                Password: <input type="password" id="log-pass" name="log-pass" > <br />
                <button type="submit" >Log in</button>
            </form>
    
        </body>
    </html>
    

    login.js

    $(document).ready(function(){
    
        // #login = login is the name of our login form
        $('#login').submit(function(e) {
            $.ajax({
                type: "POST",
                url: "login.php",
                data: $('#login').serialize(),
                dataType: "json",
                success: function(msg){
    
                    if(parseInt(msg.status)==1)
                    {
                        window.location=msg.txt;
                    }
                    else if(parseInt(msg.status)==0)
                    {
                        window.location=msg.txt;
                    }                               
                }
            });
            e.preventDefault();
    
        });
    
    
    });
    

    的login.php

    <?php
    
    
        if(isset($_POST['log-mail']) && $_POST['log-mail'] != ''  && isset($_POST['log-pass']) && $_POST['log-pass'] != '' ) {  
            $_data_ = 'index.php?user_data='.$_POST['log-mail'];
            echo msg_result(1,$_data_);
        }else{
            $msg_att = "index.php?login_attempt=1";
            echo msg_result(0,$msg_att);   
    
        }
    
    
    
        function msg_result($status,$txt) {
            return '{"status":'.$status.',"txt":"'.$txt.'"}';
        }
    
    
    ?>
    

    如果你

    ,你可以在你的网址上看到
    1. 完成所有字段=&gt; ... index.php?user_data=user_data@gmail.com
    2. uncomplete =&gt; ...的index.php?login_attempt = 1
    3. 希望这可以解决您的问题