2012-02-07 26 views
0

这是我的javascript。我试图让jQuery将我的登录表单数据发送到我的PHP文件。然后我告诉它从php文件中获取数据并显示它。但是所有回来的都是“空”。如果我要求生物等其他值,它可以显示它。但它不能显示从我的表单发送的数据。提交表单与jQuery .ajax()给我一个null?

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

?> 

非常感谢你的帮助!

+0

json的正确内容类型是'application/json' – Trevor 2012-02-07 01:40:31

+0

请向我们展示完整的表单。 – 2012-02-07 01:51:01

+0

为什么你有两步调用同一个PHP页面两次?你不能让它从第一个电话中返回适当的信息吗? – nnnnnn 2012-02-07 02:28:56

回答

2

的getJSON发送GET请求,但您尝试访问后可变(可正是你不送通过$ .getJSON任何变量)

的$。阿贾克斯() - 请求与设置为'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> 
+0

我使用.ajax()发送数据并使用.getJSON检索数据 – Karl 2012-02-07 15:21:37

+1

您尝试访问getJSON回调中的数据[0],其中signin.php不会返回任何$ _POST ['email'],因为$ _POST是空的。 getJSON的调用在代码中是不需要的,只能使用$ .ajax() - 请求,其数据类型设置为'json' – 2012-02-07 15:30:05

+0

正确。为什么它是空的?我怎么修复它? – Karl 2012-02-07 15:32:25

1

您是否测试过以确保您的php正在发送数据?既然你在phonegap中,你需要在你的服务器上引用php,并且确保你已经在你的plist中列出了外部主机。

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

然后在你的PHP只是回声一些“你好世界”和console.log消息在你的ajax。

如果这样的作品,那么你知道你能够通过只是呼应

json_encode($_POST['email']); 

其是否正常工作的下一个步骤是发送给访问你的PHP,所以下一步就是要到的是通过你的变量,开始回到整个请求 -

echo json_encode($profile); 

只是安慰给予任何的localStorage之前登录的数据结果,如果数据结果回来如预期那么分配使用索引瓦尔喜欢你目前的,但这样做就像dr.mobile说,你不需要额外的请求,你已经拥有了数据。

+0

我能从我阵列中位置1的php数组“Karl”中通过。不通过的唯一值是$ email值。 – Karl 2012-02-07 16:40:00

+0

,你确定你的输入名称是电子邮件的形式? – 2012-02-07 16:43:04

+0

是的。这很奇怪...似乎打破的地方是我的表单中的数据不是POST的,所以我不能使用它从PHP $ _POST() – Karl 2012-02-07 16:50:21