2015-06-29 2 views
0

У меня есть страница HTML/PHP (sucessful.php), которая получает переменную job_id с другой страницы.Передача нескольких переменных в AJAX

Я пытаюсь отправить две переменные и их данные с этой страницы на страницу с именем interview.php, но job_id не переходит на другую страницу.

Где проблема?

successful.php

<?php $getid =$_GET['jobid'];?> 
    <html> 
    <head> 
     <link href="css/bootstrap.min.css" rel="stylesheet"> 

    <script> 
    function showSuccess (str,$getid) { 
     var job_id= $getid; 

    var resp; 
    if (window.XMLHttpRequest) { 
     resp = new XMLHttpRequest(); 
     xmlhttp = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    var data = "q="+str+"job_id="+job_id 

     xmlhttp.open("POST", 
      "interview.php"); 
     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");     
     xmlhttp.send(data); 
     xmlhttp.onreadystatechange = 
     function display_data() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status==200) { 

      document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 


     } 
     } 
     } 


    </script> 
    </head> 
    <body> 


    <div class="col-md-4 col-md-offset-4"> 
    <form> 

     <?php 
    echo '<select name="number" onchange="showSuccess(this.value)" class="form-control"> 
     <option value="">Select a person:</option> 
     <option value="1">1</option> 

     <option value="5">5</option> 
     <option value="0">0</option> 
     <option value="10">10</option> 
     <option value="15">15</option> 
     <option value="20">20</option> 
     <option value="25">25</option> 
     <option value="30">30</option> 
     <option value="35">35</option> 
     <option value="40">40</option> 
     <option value="45">45</option> 
     <option value="50">50</option> 
     <option value="55">55</option> 
     <option value="60">60</option> 
     <option value="65">65</option> 
     <option value="70">70</option> 
     <option value="75">75</option> 
     <option value="80">80</option> 
     <option value="85">85</option> 
     <option value="90">90</option> 
     <option value="95">95</option> 
     <option value="100">100</option> 
     </select>'; 
     ?> 

    </form> 
    </div> 
    <br> 
    <div id="txtHint" class="col-md-4 col-md-offset-4"><b>The candidates</b></div> 
    </body> 
    </html> 

interview.php 
<?php 
$q = intval($_POST['q']); 
?> 

    <?php 
    $getid = $_REQUEST['job_id'];?> 

    <?php 
    include('includes/conn.php'); 
    $row="SELECT DISTINCT id,name,idNo,jobTitle,job,SUM(points) AS total FROM shortlist WHERE job='$getid' 
    GROUP BY idNo ORDER BY total DESC LIMIT $q"; 
    $query=mysqli_query($conn,$row) or die(mysqli_error($conn)); 

    while($row=mysqli_fetch_array($query)) 
    { 
     echo "<p>".$row['name'].$row['total']."</p>"; 

    } 

    mysqli_close($conn); 
    ?> 

ответ

1

Вы используете POST так и должно быть:

var data = {q:str,job_id:job_id}; 

Если вы хотите получить, изменить метод GET затем добавить данные в виде строки запроса:

var data = "?q="+str+"&job_id="+job_id; 

И передать работу id к функции:

echo '<select name="number" onchange="showSuccess(this.value,'.$_GET['jobid'].')" class="form-control"> 

AJAX

<html> 
<head> 
    <link href="css/bootstrap.min.css" rel="stylesheet"> 
<script> 
window.onload = function() { 
    function showSuccess(){ 
     var success = document.getElementById("success"); 
     //parameters 
     var e = document.getElementByName("number"); 
     var selectedNumber = e.options[e.selectedIndex].value; 
     var jobId = document.getElementById("jobId").value; 
     //data to send 
     var params = {q:selectedNumber,job_id:jobId}; 

     var xmlhttp = new XMLHttpRequest(); 
     xmlhttp.open("POST", "interview.php", true); 
     xmlhttp.setRequestHeader("Content-type", "application/json"); 
     xmlhttp.onreadystatechange = function() { 
      if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       var data = JSON.parse(xmlhttp.responseText); 
       var html=''; 
       for (var i in data) { 
        html += "<p>" + data.name + data.total + "</p>"; 
       } 
       //print success to the div 
       success.innerHTML=html; 
      } 
     } 
     xmlhttp.send(null); 
    } 
} 
</script> 
</head> 
<body> 
<div class="col-md-4 col-md-offset-4"> 
<form> 
<select name="number" onchange="showSuccess()" class="form-control"> 
    <option value="">Select a person:</option> 
    <option value="1">1</option> 
    <option value="5">5</option> 
    <option value="0">0</option> 
    <option value="10">10</option> 
    <option value="15">15</option> 
    <option value="20">20</option> 
    <option value="25">25</option> 
    <option value="30">30</option> 
    <option value="35">35</option> 
    <option value="40">40</option> 
    <option value="45">45</option> 
    <option value="50">50</option> 
    <option value="55">55</option> 
    <option value="60">60</option> 
    <option value="65">65</option> 
    <option value="70">70</option> 
    <option value="75">75</option> 
    <option value="80">80</option> 
    <option value="85">85</option> 
    <option value="90">90</option> 
    <option value="95">95</option> 
    <option value="100">100</option> 
    </select> 
</form> 
</div> 
<br> 
<div id="txtHint" class="col-md-4 col-md-offset-4"><b>The candidates</b></div> 
<div id="success"></div> 
<input id="jobId" value="<?php echo $_GET['job_id'] ?>" /> 
</body> 
</html> 

PHP

<?php 
$q = intval($_POST['q']); 
$job_id = $_POST['job_id']; 
include('includes/conn.php'); 
$row="SELECT DISTINCT id,name,idNo,jobTitle,job,SUM(points) AS total FROM shortlist WHERE job='$job_id' 
GROUP BY idNo ORDER BY total DESC LIMIT $q"; 
$query=mysqli_query($conn,$row) or die(mysqli_error($conn)); 
$data = array(); 
while($row=mysqli_fetch_array($query)){ 
$data[]=$row; 
} 
mysqli_close($conn); 
echo json_encode($data); 
?> 
+0

Я отредактировал, и я получаю эту ошибку от firebug. "ReferenceError: NCAGR002 is not ». Но интересно, почему, поскольку job_id прошло, это NCAGR002/5/2015.where is bug? ...Когда я использую var data = {q: str, job_id: job_id}; с POST я получаю ошибку, что и q, и job_id - неизвестный индекс – Colo

+0

@ user3752159 см. мое редактирование, у вас несколько проблем – meda

+0

thanks.Позвольте мне попробовать. – Colo

0

Вы должны построить эту строку, как это, используя &:

var data = "q="+str+"&job_id="+encodeURIComponent(job_id); 

Вы также должны получить доступ к $getid переменной PHP следующим образом:

var job_id='<?php echo $getid ?>'; 

в вашем showSuccess функция, поскольку вы объединяете PHP с javascript - тогда вы можете удалить второй параметр.

+0

, он работал, но не показывая каких-либо value.the поджигатель дает следующую ошибку "ReferenceError: NCAGR002 не определен" .Но Гадаю почему, поскольку job_id прошел, это NCAGR002/5/2015.where is bug? – Colo

+0

oops, он попытался разделить его на 5 и к 2015 году - я обновил его, добавив котировки вокруг эхоидной переменной '$ getid'. Чтобы убедиться, что нет запрещенных символов, используйте строковую строку запроса 'encodeURIComponent'. –

+0

Я использовал его, но ошибка все еще выскакивает. – Colo