2013-03-07 4 views
1

Я новичок в PHP и Javascript/Ajax, поэтому, пожалуйста, несите меня.Как отправить данные на мой PHP-скрипт с помощью AJAX?

Все, что мне нужно сделать, это получить переменную из Ajax и установить ее как переменную в php. Я пытаюсь сделать это с супер-глобальным GET, но что-то не так. Я не хочу этого, подавая форму.

Вот мои JS:

function myFunction(){ 
var hora= document.getElementById("hora").value; 
$.ajax({ 
     type : 'GET', 
     url : 'reservation.php', 
     data : {hora: hora}, 
     success : function(data) { 
       console.log(hora);//This is because I was curious as to 
          // what the console would say. I found 
          // that this sets the super global if I 
          // change the url to something else that 
          // doesn't exist. Console would say 
          // -GET http://localhost/bus/(somepage).php?hora=4 
          // 404 (Not Found)- 
       alert(hora); 
       } 
}) 
} 

Вот мой PHP:

Hora: 
<select name="hora" id="hora" onchange="myFunction()"> 
    <?php 
     $query = "SELECT * FROM vans"; 
     $horas_result = mysql_query($query); 
     while ($horas = mysql_fetch_array($horas_result)) { 
     echo "<option value=\"{$horas["van_id"]}\">{$horas["time"]}</option>"; 
     } 
    ?> 
</select>&nbsp; 
Asientos Disponibles: 
    <?php echo $_GET["hora"]; ?> 
     //Right now I only want to echo this variable.. 

Как вы можете видеть, сейчас я только хочу, чтобы повторить эту переменную, в дальнейшем я буду использовать это написать запрос.

+0

HTML в вашем php-файле не будет отображаться. backup.php должен быть чистым файлом php, он используется только для обработки информации, которую содержит переменная. Пользователь не должен просматривать его. – ILikeTacos

+0

@AlanChavez: Результат PHP будет отправлен на вызов AJAX. Он * может * быть HTML, если хочет. –

+0

@RocketHazmat Мой плохой, это правда. Файл не должен быть чистым php. – ILikeTacos

ответ

0

Посмотрите на код i post, ajax используется для отправки/получения данных без необходимости обновления страницы, но если вы просто хотите опубликовать данные и дать результат на другой странице, используйте форму вместо этого.

<?php 

    if (isset($_GET["hora"])) 
    { 
     echo $_GET["hora"]; 

     exit; 
    } 
?> 

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Page title</title> 

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

</head> 

<body> 

<script type="text/javascript"> 

     $(document).ready(function() 
      { 
       $("#hora").change(function() 
        { 
         $.ajax(
          { 
           type : 'GET', 
           url : '', 
           data : $('select[name=\'hora\']'), 
           success : function(data) 
            { 
             $('#ajax_result').html('Asientos Disponibles: ' + data); 
            }, 
           error: function(xhr, ajaxOptions, thrownError) 
            { 
             alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); 
            } 
          } 
         ) 
        } 
       ) 

      } 
     ) 

</script> 

<select name="hora" id="hora"> 
    <?php 
     $query = "SELECT * FROM vans"; 
     $horas_result = mysql_query($query); 
     while ($horas = mysql_fetch_array($horas_result)) { 
     echo "<option value=\"{$horas["van_id"]}\">{$horas["time"]}</option>"; 
     } 
    ?> 
</select>&nbsp; 
    <div id="ajax_result"> 
    </div> 
</body> 
</html> 
+0

ОК, наконец, он работает. Но я хочу установить это как переменную, чтобы я мог использовать с php. Это возможно? – user2145828

+0

@ user2145828 в начале кода у вас есть код php, связанный с действием GET, поэтому вы можете вставить нужный вам код, например, использовать переменную hora для поиска в базе данных и выводить все, что хотите, например, левые места , – 2013-03-08 09:23:02

0

Например, следующий сценарий

$.ajax({ 
      type: "POST", 
      url: "test.php", 
      data: {value:1} 
     }).done(function(msg) { 
        // msg contains whatever value test.php echoes. Whether it is code, or just raw data. 
      if(msg=="Success") { 
       alert("hello world"); 
       } else { 
       alert("Hello Hell") 
      } 
     }); 

установит переменную $_POST['value'] в 1

и мой test.php выглядит следующим образом:

<?php 
if($_POST['value'] == "1") { 
    echo "Success"; 
} else { 
    echo "Failure"; 
} 
?> 

Если запустить этот пример, в веб-страница покажет вам окно с текстом «Hello World» Если вы измените значение на любой другой номер, это будет ow вам предупреждение с текстом «Hello Hell»

Надеюсь, что ответит на ваш вопрос.