2013-07-24 32 views
-2

這是我的簡單表單,其中包含workers名稱,empno,empsal和doj(加入日期)。在這裏,我通過XMLHttpRequest對象通過異步發送並更新myDiv中DOM中的requestTxt來發布此表單的值。如何將參數發佈到php logincheck.php

在這裏,當我傳遞的參數有點像這樣的事情,我可以得到php echo $ empname中的值。 「是我的名字」;

var params = "empname="+myname+"&empno="+myno+"&empsal="+mysal+"&empdoj="+mydoj; 

但在同一時間,如果我把它作爲一個對象,字符串化我不知道爲什麼它不打印

 var params = { 
     "empname":myname, 
     "empno":myno, 
     "empsal":mysal, 
     "empdoj":mydoj 
    };  
    var jsonText = JSON.stringify(params); 
    alert(jsonText); 

這裏是我的代碼 的index.html

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="windows-1252"> 
<title>Sample form</title> 
<style> 
table td{ 
    border-collapse:collapse; 
    border:1ps solid #000; 
} 
.hide{ 
    display:none; 
} 
</style> 
<script type="text/javascript" src="util.js"></script> 
</head> 
<body> 
<form name="sampleForm" id="sampleForm" action="javascript:return false;"> 
    <table width="40%"> 
     <tr> 
      <td>Employee Name:</td> 
      <td><input type="text" name="empname" id="empname"/></td> 
     </tr> 
     <tr> 
      <td>Employee No:</td> 
      <td><input type="text" name="empno" id="empno"/></td> 
     </tr> 
     <tr> 
      <td>Employee salary:</td> 
      <td><input type="text" name="empsal" id="empsal"/></td> 
     </tr> 
     <tr> 
      <td>Employee DOJ:</td> 
      <td><input type="text" name="empdoj" id="empdoj"/></td> 
     </tr> 
     <tr> 
      <td colspan="2"><input type="submit" name="submitBtn" id="submitBtn1" /></td> 
     </tr> 
    </table> 
    <div class="hide" id="myDiv"></div> 
      </form> 
      <script type="text/javascript"> 
      var subform = document.getElementById("sampleForm"); 
     subform.onsubmit = function(){  
    var myReq; 
    var uRLTxt = "loginCheck.php"; 
    var myname = document.getElementById("empname").value; 
    var myno = document.getElementById("empno").value; 
    var mysal = document.getElementById("empsal").value; 
    var mydoj = document.getElementById("empdoj").value; 
    /*var params = "empname="+myname+"&empno="+myno+"&empsal="+mysal+"&empdoj="+mydoj;  */ 
    var params = { 
     "empname":myname, 
     "empno":myno, 
     "empsal":mysal, 
     "empdoj":mydoj 
    };  
    var jsonText = JSON.stringify(params); 
    alert(jsonText); 
    myReq = new XMLHttpRequest(); 
    myReq.open("POST",uRLTxt,true); 
    myReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
    //myReq.setRequestHeader("Content-type", "application/JSON; charset=utf-8");   
    myReq.setRequestHeader("Content-length", jsonText.length); 
    //alert(jsonText.length); 
    myReq.setRequestHeader("Connection", "close"); 
    myReq.onreadystatechange = function() { 
     if(myReq.readyState == 4 && myReq.status == 200){ 
      var return_data = myReq.responseText; 
      console.log(return_data); 
      document.getElementById("myDiv").style.display = "block"; 
      document.getElementById("myDiv").innerHTML = return_data; 
     } 
    } 
    myReq.send(jsonText); 
    return false; 
     }; 
     </script> 
     </body> 
     </html> 

PHP代碼 - loginCheck.php

<?php 
    $empname = isset($_REQUEST['empname']); 
    $empno = isset($_REQUEST['empno']); 
    $empsal = isset($_REQUEST['empsal']); 
    $empdoj = isset($_REQUEST['empdoj']); 
    echo $empname."is my name"; 
?> 
+0

您真的認爲有人讀過嗎? – Sliq

+0

對不起,我現在已經清楚了代碼。 – PCA

回答

3

, 你:這個

var params = { 
    "empname":myname, 
    "empno":myno, 
    "empsal":mysal, 
    "empdoj":mydoj 
};  
var jsonText = JSON.stringify(params); 
alert(jsonText); 

// Blah blah... 

myReq.send(jsonText); 

<?php 
    // Repeat for all variables 
    // This is an equivalent to: 
    // if (isset($_REQUEST['empname'])) { 
    //  $empname = $_REQUEST['empname']; 
    // } 
    // else { 
    //  $empname = ""; 
    // } 
    $empname = isset($_REQUEST['empname']) ? $_REQUEST['empname'] : ""; 

    echo "{$empname} is my name"; 
?> 

JavaScript中的PARAMS字符串,改變這種想要在send()方法中指定要發送的數據。

var params = { 
     "empname":myname, 
     "empno":myno, 
     "empsal":mysal, 
     "empdoj":mydoj 
    };  
    var jsonText = JSON.stringify(params); 
    myReq.send("totalJsonStr="+jsonText); 

使用json_decode()解碼您的json字符串。將此添加到您的loginCheck.php中

<?php 
     if(isset($_POST["totalJsonStr"])) { 
     $jsonVal = json_decode($_POST["totalJsonStr"]); 
     //If you want empname 
     print $jsonVal->{'empname'} . " is my name"; } 
     else { die("No Data Found"); } 
    ?> 
+1

我一直在嘗試這一些日子,這沒有奏效。感謝raduns,現在它像魅力一樣工作。 – PCA

+0

我很高興它工作! – raduns

+0

我還注意到了一件事,當我將setRequestHeader改爲application/json時,它說「找不到數據。myReqet.setRequestHeader(」Content-type「,」application/JSON; charset = utf-8「) – PCA

0

試試吧,

<script language="javascript" src="jquery-1.4.4.min.js"></script> 
    <script> 
var myname = document.getElementById("empname").value; 
var myno = document.getElementById("empno").value; 
var mysal = document.getElementById("empsal").value; 
var mydoj = document.getElementById("empdoj").value; 


var subform = document.getElementById("sampleForm"); 
     subform.onsubmit = function(){ 
    $.ajax({ 
    url: 'loginCheck.php', //This is the current doc 
    type: "POST", 
    dataType:'json', // add json datatype to get json 
    data:"empname=myname&empno=myno&empsal=mysal&empdoj=mydoj", 
    success: function(data){  alert(data);  }) 
    }, });  }; 
</script> 
+0

它正在與jQuery,但我需要一個正常的解決方案JavaScript XMLHttpRequest請求 – PCA

0

你的PHP是這樣的:

<?php 
    $empname = isset($_REQUEST['empname']); 
    $empno = isset($_REQUEST['empno']); 
    $empsal = isset($_REQUEST['empsal']); 
    $empdoj = isset($_REQUEST['empdoj']); 
    echo $empname."is my name"; 
?> 

但函數isset()只返回true或false,具體取決於是否設置了變量。你的腳本應該是這樣的:如果你想獨自使用JavaScript

var params = { 
    "empname":myname, 
    "empno":myno, 
    "empsal":mysal, 
    "empdoj":mydoj 
}; 
var out = new Array(); 

for (key in params) { 
    out.push(key + "=" + encodeURI(params[key])); 
} 
var postText = out.join("&"); 
alert(postText); 

// Blah blah... 

myReq.send(postText); 
+0

我仍然獲得empname的空字符串 – PCA

+0

看看更新的答案,您通過POST發送JSON,但您必須發送HTTP鍵值字符串(key1 = value1&key2 = value2&...)。 –