这是我的javascript。我正在尝试让jQuery将我的登录表单数据发送到我的PHP文件中。然后我告诉它从php文件中获取数据并显示出来。但返回的都是"null"。如果我请求另一个值,如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);
?>
非常感谢你的帮助!
getJSON发送GET请求,但您尝试访问POST变量。(确切地说,您不通过$.getJSON发送任何变量)
数据类型设置为"json"的$.ajax()-请求应该足够了:
<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>
您是否进行了测试以确保php正在发回数据?由于你在phonegap中,你需要引用服务器上的php,也要确保你已经在plist中列出了外部主机。
在xcode中,在你的phoneGap.plist文件中,你会看到外部主机,在那里添加一个新条目,密钥无关紧要,但值设置为*,这将允许所有外部域。
然后在php中,只需回显一些"helloworld",并在ajax中console.log该消息。
如果这样做有效,那么您就知道自己能够访问php,所以下一步是将变量传递给它。首先,只需回显
json_encode($_POST['email']);
如果这样做有效,下一步就是发回整个请求-
echo json_encode($profile);
在分配任何localStorage之前,只需控制台记录数据结果,如果数据结果如预期返回,则像当前一样使用索引分配vars,但要像dr.mobile所说的那样,你不需要额外的请求,你已经有了数据。