2014-02-21 57 views
0

我有兩個php文件,test.php和test2.php
in'test.php'我有一個表單,我想獲取名稱並用ajax和php回顯它這裏是我的代碼,它有什麼問題?php/ajax:form get方法不工作

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

你應該告訴我們什麼地方錯了,你還是會發生什麼VS你希望發生什麼什麼錯誤,你卡住了什麼故障排除步驟。 –

+0

沒有錯誤,只是不工作,我的意思是當我點擊鏈接會出現在標籤沒有變化

+0

因爲你不通過URL返回任何參數。您只是打印$ q的值。您可以在成功時使用此值,而不是使用.open()獲取URL。 找到了。檢查這個鏈接。它可能會幫助你。 http://stackoverflow.com/questions/4971254/javascript-xmlhttprequest-open-php-file-and-execute-more-javascript – MentalRay

回答

0

在形式的按鈕是提交輸入,這將導致打印頁被重新加載。添加return falseonclick方法來防止這種情況的發生:

<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

我做了這個變化,我認爲這becames更好,但不是完全地確定,將打印只是' 0'(沒有quet的),什麼是錯的? –

+0

你的PHP代碼強制輸出是一個整數,你正在使用的功能'intval'。您可能想使用'htmlspecialchars'來代替。 –