2013-06-18 2 views
1

Я сделал это раньше, но по какой-то причине параметры передаются странно.Передача параметров на php из javascript

У меня есть функция 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); 

Я побежал веб-консоли, и это то, что на самом деле получить прошло ...

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

I «Не знаю, что происходит между xmlhttp.open и методом GET в php. Ни одна из этих переменных не проходит.

+1

JavaScript выглядит все в порядке, я предполагаю, и URL должен работать. Попробуйте проверить, действительно ли вы получаете какие-либо параметры GET в своем PHP, например, с 'print_r ($ _ GET)' в верхней части вашего скрипта. –

+0

Да, это было первое, что я сделал, я ничего не получил, когда пытался распечатать его. – user1058359

+0

Только для записи вы * вызываете 'xmlhttp.send()' после вызова 'open()', правильно? То есть, вы действительно отправляете запрос? (Возможно, добавьте еще несколько 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().

Только не забудьте включить библиотеку JQuery в <head> теги:

<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); 
Смежные вопросы