2011-02-17 77 views
0

我接下来做什么......在PHPjquery.post()获取并返回PHP的jQuery

请求从HTML(jQuery的)从PHP在HTML

$.post("index.php?res=ok", { username: user, userpass: pass }, function(data) { 
    $("#signin_ok").html("You sign in now "+data.name+". Your password is: "+data.pass); 
    $("#signin_ok").show() 
    .animate({fontSize:"120%"}, 100).css({color:"#32CD32"}) 
    .animate({fontSize:"100%"}, 100) 
    .animate({fontSize:"100%"}, 3000) 
    .animate({fontSize:"120%"}, 200, function() { 
     $(this).css({display:"none"}); 
    }); 
}); 

回报(jQuery的)

if(isset($_REQUEST['res']) && $_REQUEST['res'] == "ok") { 
    if(isset($_POST['username']) && isset($_POST['userpass'])) { 
     $username = $_POST['username']; 
     $userpass = $_POST['userpass']; 
     echo json_encode(array("name" => $username, "pass" => $userpass)); 
    } 
} 

但返回“你现在登录不确定。您密码是:undefined

怎么了?如何解决它?

P.S.

当我添加 “JSON” 像这样

$.post("index.php?res=ok", { username: user, userpass: pass }, function(data) { 
    . . . . . . 
    . . . . . . 
}, "json"); 

没有反应

到底发生了什么???

+0

您是否尝试过使用fiddler或firebug来查看服务器传回的内容? – scrappedcola 2011-02-17 16:48:26

+0

做一个console.log(数据)并查看(例如在Chrome中)结果如何。 如果结果是字符串,你将不得不eval()它 – 2011-02-17 16:55:14

+0

结果是`{“name”:“sabotagnik”,“pass”:“66666666666666”}`我将必须eval()它在PHP或JS?如果在PHP中:`$ arr = array(“name”=> $ username,“pass”=> $ userpass); eval(“\ $ arr = \”$ arr \“;”);回声json_encode($ arr);`和结果是``Array“` – SharkWeb 2011-02-21 12:28:31

回答

0

这是否有诀窍?

$.post("index.php?res=ok", { username: user, userpass: pass }, function(data) { 
    $("#signin_ok").html("You sign in now "+data[0].name+". Your password is: "+data[0].pass); 
    $("#signin_ok").show() 
    .animate({fontSize:"120%"}, 100).css({color:"#32CD32"}) 
    .animate({fontSize:"100%"}, 100) 
    .animate({fontSize:"100%"}, 3000) 
    .animate({fontSize:"120%"}, 200, function() { 
     $(this).css({display:"none"}); 
    }); 
}); 
+0

不要忘记确保你的PHP脚本设置JSON头:头('Cache-Control:no-cache,must-revalidate'); header('Expires:Mon,1997年7月26日05:00:00 GMT'); header('Content-type:application/json'); – 2011-02-17 16:51:48

+0

我已经试过但它不起作用 – SharkWeb 2011-02-17 17:00:28

2

尝试添加JSON头到PHP脚本

header('Content-type: application/json'); 
// then your code 

而且,看来你刚刚返回传递的数据,你为什么不只是使用的用户,并通过其中的数据,而不是data.user和data.pass?

0

我会用$就响应号召,因为这往往是我用的,因为$。员额只是包装$就反正...

$.ajax({ 

    type: "POST", 
    url: "index.php?res=ok", 
    data: { "username" : user, "userpass": pass }, 
    success: function(msg) { 

      var data = $.parseJSON(msg); 
      alert(data.username); 
      alert(data.userpass); 

    } 

}); 
0

我已经解决了这个问题我自己,我是这么认为的:)

我创建新的文件(new.php):

<?php 
if(isset($_REQUEST['res']) && $_REQUEST['res'] == "ok") { 
    if(isset($_POST['username']) && isset($_POST['userpass'])) { 
     $username = $_POST['username']; 
     $userpass = $_POST['userpass']; 
     $arr = array("name" => $username, "pass" => $userpass); 
     echo json_encode(array("name" => $username, "pass" => $userpass)); 
    } 
} 
?> 

,并从HTML传递请求PHP(new.php)

. . . 
$.post("new.php", { "username": user, "userpass": pass, "res": "ok" }, function(data) { 
    $("#signin_ok").html("You sign in now "+data['name']+". Your password is: "+data['pass']); 
    console.log(data); 
    $("#signin_ok").show() 
     .animate({fontSize:"120%"}, 100).css({color:"#32CD32"}) 
     .animate({fontSize:"100%"}, 100) 
     .animate({fontSize:"100%"}, 3000) 
     .animate({fontSize:"120%"}, 200, function() { 
      $(this).css({display:"none"}); 
     }); 
}, "json"); 
. . . 

和我得到了结果:) 但它很愚蠢,为什么它不起作用在index.php ??? ???