2013-06-18 104 views
1

我已經完成了這之前,但由於某些原因參數傳遞奇怪。從javascript傳遞參數到PHP

我有一個JavaScript函數,我用來傳遞參數,我跑了一些測試,並在函數中的變量是正確的。

這些都是涉及到這一問題的JS的只是幾個片段:

var tdes = document.getElementById("taskDescription1").value; 
var tnam = document.getElementById("taskName1").value; 
var shif = document.getElementById("shift1").value; 
var ttyp = document.getElementById("taskType1").value; 
var date = document.getElementById("datepicker").value; 
var ooc = document.getElementById("ooc1").value; 
var dateSplit = date.split('/'); 
var deadlineDate = ""; 



for(var i = 0; i < dateSplit.length; i++){ 
deadlineDate = deadlineDate + dateSplit[i]; 
} 
xmlhttp.open("GET","subTask.php?q="+ encodeURIComponent(tdes) + "&w=" + encodeURIComponent(tnam) +"&e=" +encodeURIComponent(shif) + "&y=" + encodeURIComponent(ttyp) + "&b=" + encodeURIComponent(deadlineDate) + "&u=" + encodeURIComponent(ooc),true); 

我跑了Web控制檯,這是什麼是真正獲得通過......

http://***************/****/********/subTask.php?taskName1=test+taskname+works&taskDescription1=test+des&shift1=All&ooc1=Open&taskType1=normal&datepicker=06%2F28%2F2013 

我我不確定xmlhttp.open和PHP中的GET方法之間發生了什麼。這些變量都沒有通過。

+1

中的JavaScript看起來我猜沒事,和URL應該工作。嘗試檢查是否實際在PHP中接收到任何GET參數,例如在腳本的頂部使用'print_r($ _ GET)'。 –

+0

是的,這是我做的第一件事,當我試圖打印出來時,我什麼也沒有得到。 – user1058359

+0

爲了記錄,你*在open()調用之後調用'xmlhttp.send()',對吧?也就是說,你實際上正在發送請求? (也許增加一些JS代碼?) –

回答

0

爲什麼不使用jQuery - 非常簡單的格式(我喜歡POST ...):

$(document).ready(function() { 
    var tdes = $("#taskDescription1").val(); 
    var tnam = $("#taskName1").val(); 
    var shif = $("#shift1").val(); 
    var ttyp = $("#taskType1").val(); 
    var date = $("#datepicker").val(); 
    var ooc = $("#ooc1").val(); 
    var dateSplit = date.split('/'); 
    var deadlineDate = ""; 

    for(var i = 0; i < dateSplit.length; i++){ 
     deadlineDate = deadlineDate + dateSplit[i]; 
    } 

    $.ajax({ 
     type: "POST", 
     url: "subTask.php", 
     data: "q="+ encodeURIComponent(tdes) + "&w=" + encodeURIComponent(tnam) +"&e=" +encodeURIComponent(shif) + "&y=" + encodeURIComponent(ttyp) + "&b=" + encodeURIComponent(deadlineDate) + "&u=" + encodeURIComponent(ooc),true), 
     success: function(whatigot) { 
      alert('Server-side response: ' + whatigot); 
     } //END success fn 
    }); //END $.ajax 

}); //END document.ready() 

通知的success回調函數是多麼容易寫...通過subTask.php返回任何將可在alert()例子中看到的那個函數中。

只是要記住,在<head>標籤jQuery庫:

<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
</head> 

此外,該行添加到您的subTask.php文件的頂部,看看發生了什麼:

<?php 
    $q = $_POST["q"]; 
    $w = $_POST["w"]; 
    die("Value of Q is: " .$q. " and value of W is: " .$w); 

q=w=的值將會在警告框中返回給您,以便(至少)您可以看到它們在收到subTask.php時包含的值。

+0

問題在於他們沒有被子任務接收,我試圖避免JQuery嘗試學習如何實際使用它。 – user1058359

0

下面的腳本應該有所幫助:

function ajaxObj(meth, url) 
{ 
var x = false; 
if(window.XMLHttpRequest) 
    x = new XMLHttpRequest(); 
else if (window.ActiveXObject) 
    x = new ActiveXObject("Microsoft.XMLHTTP"); 
x.open(meth, url, true); 
x.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
return x; 
} 
function ajaxReturn(x){ 
    if(x.readyState == 4 && x.status == 200){ 
     return true;  
    } 
} 

    var ajax = ajaxObj("POST", "subTask.php"); 
    ajax.onreadystatechange = function() { 
     if(ajaxReturn(ajax) == true) { 
      console.log(ajax.responseText) 
     } 
    } 
    ajax.send("u="+tdes+"&e="+tnam+ ...... pass all the other 'n' data);