2014-02-21 2 views
0

У меня есть два файла php, test.php и test2.php
в 'test.php' У меня есть форма, и я хочу получить имя и эхо его с помощью ajax и php вот мой код, что с ним не так?php/ajax: form get method не работает

test.php

<html> 
<head> 
<script> 
function showHint(str) 
{ 
if (str.length==0) 
    { 
    document.getElementById("txtHint").innerHTML=""; 
    return; 
    } 
var xmlhttp=new XMLHttpRequest(); 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","test2.php?q="+str,true); 
xmlhttp.send(); 
} 
</script> 
</head> 
<body> 

<p><b>Start typing a name in the input field below:</b></p> 
<form method="get"> 
First name: <input type="text" name="fname"> 
<input type="submit" value="click me" onclick="showHint(fname)"> 
</form> 
<p>Suggestions: <span id="txtHint"></span></p> 

</body> 
</html> 

и test2.php является

<?php 
$q = intval($_GET['q']); 
echo $q; 
?> 
+0

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

+0

нет ошибки, просто не работает, я имею в виду, когда я нажимаю на кнопку, в теге не будет изменений.

+0

Потому что вы не возвращаете никаких параметров через url. Вы просто печатаете значение $ q. Вы можете использовать это значение для успеха, но вместо получения URL-адреса с .open(). Найдено. Проверьте эту ссылку. Это может помочь вам. http://stackoverflow.com/questions/4971254/javascript-xmlhttprequest-open-php-file-and-execute-more-javascript – MentalRay

ответ

0

Кнопка в форме ввода представления, которое приведет страница перезагрузке. Добавить return false в ваш метод onclick, чтобы предотвратить это:

<input type="submit" value="click me" onclick="showHint(fname); return false"> 

Кроме того, ваша showHint функция ожидает строку, но вы передаете ввод HTML. Вы можете получить текстовое значение, добавив следующую строку в верхней части функции:

if (typeof str !== 'string' && typeof str.value !== 'undefined') { 
    str = str.value; 
} 
+0

Я сделал это, я думаю, что это становится лучше, но не полностью нормально, он печатает только " 0 '(без quet's), что не так? –

+0

Ваш php-код заставляет вывод быть целым, поскольку вы используете функцию 'intval'. Вероятно, вы захотите использовать 'htmlspecialchars'. –