2017-02-22 5 views
1

Я использую чистые js для отправки ajax-запроса на другую .php-страницу, я действительно новичок в концепции ajax, поэтому не знаю многого. Я видел jQuery ajax, но я предпочитаю изучать чистый js ajax, чтобы я мог понять, как работает ajax.Как отправить ajax на эту же страницу?

Мне нужно отправить ajax на ту же страницу, вместо отправки на другую страницу для обработки данных. можно ли это сделать? и как?

Моя страница Индекс:

<div id="response"></div> 
    <form method="post" id="myForm"> 
     <span>Username: </span> 
     <input type="text" name="uname" id="uname">&nbsp;&nbsp; 
     <span>Age: </span> 
     <input type="number" name="age" id="age">&nbsp;&nbsp; 
     <input type="submit" name="submit" value="Submit"><br> 
    </form> 
    <script src="js/app.js"></script> 

мой код PHP:

<?php 
    if(isset($_GET['uname']) && isset($_GET['age'])) { 
     $name = trim(strip_tags($_GET['uname'])); $age = trim(strip_tags($_GET['age'])); 
     echo !empty($name) && !empty($age) ? 
      '<p style="color:green">Hello: '.$name.' You\'re '.$age.' Years Old :D</p>' : 
      '<p style="color:red">Please Write your Name and Your Age</p>'; 
    } 

мой Аякса код:

window.onload = function() { 
    var myForm = document.getElementById('myForm'); 
    myForm.onsubmit = function() { 
     // Create the object from XMLHttpRequest 
     var xhttp = (window.XMLHttpRequest) ? new window.XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"), 
       uname = document.getElementById('uname').value, 
       age = document.getElementById('age').value, 
       result = document.getElementById('response'), 
       url = 'ajax-thing.php?uname='+uname+'&age='+age; 
     xhttp.onload = function() { 
      result.innerHTML = xhttp.responseText; 
     }; 
     xhttp.open('GET', url, true); 
     xhttp.send(); 
     return false; 
    } 
}; 
+0

Во-первых, jquery не является обязательным условием успеха в вашем случае. Во-вторых, можете ли вы объяснить, почему вам нужно * отправить запрос ajax на ту же страницу? Мне кажется, что вам придется записывать заявления о состоянии, чтобы исходная форма и другой контент не возвращались обратно в responseText. Если это можно сделать, будет легче и чище указывать ajax на отдельный файл для обработки. – mickmackusa

ответ

0

Попробуйте использовать Jquery

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $.ajax({ 
      url: 'ajax-thing.php', 
      data: "uname="+uname+"&age="+age, 
      success: function(data) { 
      console.log(data); // it will show the result in console 
      } 
     }); 
    }); 
</script> 
+0

Я думаю, что упоминал, что я использую чистый JS по какой-то причине. –

0

это возможно. На сервере вам нужно только проверить запрос ajax (когда вы делаете запрос с помощью ajax, к запросу будет прикреплен заголовок X-Requested-With: XMLHttpRequest). Если вы хотите сделать это проще, вы можете добавить новые параметры в url, чтобы заметить, что сервер знает, что это запрос ajax, например: ajax-thing.php?uname='+uname+'&age='+age + '&ajax=1' и возвращать все, что хотите, если это запрос ajax.

+0

, поэтому я должен добавить (& ajax = 1) в конец URL-адреса? Я имею в виду, что я не хочу отправлять запрос ajax на страницу (ajax-thing.php), вместо этого хочу, чтобы она была отправлена ​​на ту же страницу (index.php). Возможно ли это? –

+0

Это возможно, этот параметр просто для того, чтобы сообщить серверу, что этот запрос отправлен Ajax, и вы можете справиться с этим запросом более легко. Ajax не волнует ваш URL-адрес на той же странице или нет. Так что не беспокойтесь об этом. –

+0

Но я попытался отправить запрос на ту же страницу, и результат приходит как весь документ, я имею в виду, что он распечатывает структуру html-документа, который у меня есть на этой текущей странице. Знаете, в чем проблема? вы когда-нибудь пытались отправить запрос на ту же страницу раньше? и если вы, пожалуйста, приведете пример того, как я могу это сделать, я буду благодарен вам за помощь. Спасибо. –

Смежные вопросы