2011-02-17 78 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 ??? ???