使用jQuery .ajax()提交表单给我一个null?

时间:2012-02-07 01:32:53

标签: php jquery cordova

这是我的javascript。我试图让jQuery将我的登录表单数据发送到我的PHP文件。然后我告诉它从php文件中获取数据并显示它。但所有回来的都是“无效”。如果我请求另一个值,例如bio,它可以显示它。但它无法显示从我的表单发送的数据。

<script type="text/javascript">
    $(document).ready(function() {
        $("img").click(function() {
            var data = $('form#signin').serialize();
            $.ajax({
                url:'signin.php',
                type:'POST',
                data: data,
                success:function(data) {
                    $("p.test").html(data);
                    $.getJSON("signin.php", function(data) {
                        localStorage.email = data[0];

                    });
                },
                error:function(data) {
                }
            });
        });
    });
</script>

这是我的PHP

<?php

$email = $_POST["email"];

$profile = array($email, "Karl", "Clement", "Gangsta Love!", "bio bio bio bio bio bio bio     bio bio bio bio bio bio bio bio bio bio bio", "Ottawa",     "http://a3.twimg.com/profile_images/1459354642/IMG_1560_normal.jpg");

header('Content-Type:text/json');
echo json_encode($profile);

?>

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

getJSON发送GET请求,但是您尝试访问POST变量。(确切地说,您不会通过$ .getJSON发送任何变量)

$ .ajax() - 数据类型设置为'json'的请求应该足够了:

<script type="text/javascript">
    $(document).ready(function() {
        $("img").click(function() {
            var data = $('form#signin').serialize();
            $.ajax({
                url:'signin.php',
                type:'POST',
                data: data,
                dataType:'json',
                success:function(data) {

                        localStorage.email = data[0];

                },
                error:function(data) {
                }
            });
        });
    });
</script>

答案 1 :(得分:1)

你测试过以确保php正在发回数据吗?由于你处于手机中,你需要在你的服务器上引用php,同时确保你已经在你的plist中列出了外部主机。

在xcode中,在你的phoneGap.plist文件中你会看到外部主机,在那里添加一个新条目,键无关紧要,但值设置为*,这将允许所有外部域。

然后在你的php中回复你的ajax中的“hello world”和console.log那条消息。

如果可以,那么你知道你能够访问你的php,所以下一步是将你的变量传递给is,从回显开始

json_encode($_POST['email']);

如果可行则下一步是发回整个请求 -

echo json_encode($profile);

在分配任何localStorage之前,只需控制台记录数据结果,如果数据结果按预期返回,则使用当前的索引分配变量,但就像dr.mobile说的那样,你不需要额外的请求,你已经掌握了数据。