2015-07-13 2 views
0
<head> 
<script> 
function showit(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","showuser.php?q="+str,true); 
     xmlhttp.send(); 
    }  
} 
</script> 
<head> 
<body> 
<button onclick='showit(1)'>First User</button> 
<button onclick='showit(2)'>Second User</button> 
<button onclick='showit(3)'>Third User</button> 
<?php 
if(isset($_POST['submit'])){ 

?> 
<div id="txtHint"> 
</div> 
</body> 

Это главная страница, когда я нажимаю кнопку, он обрабатывает запрос Ajax для showuser.php и принести мне форму.

SHOWUSER.PHP
Отправки файла из плавленого от АЯКСА запроса

<?php 
if(isset($_GET['q'])){ 
    $id=$_GET['q']; 
    $con = mysqli_connect("localhost","root","","application"); 
    $sql="SELECT * FROM users WHERE id=$id"; 
    $result=mysqli_query($con,$sql); 
    echo "<table>"; 
    while($row=mysqli_fetch_array($result)){ 
     echo "<form method='post'>"; 
     echo "<tr><td><input type='radio' name='status' value='delete'>Delete</td><td><input type='radio' name='status' value='update' checked>Update</td></tr>"; 
     echo "<tr><td>ID:<td><input type='text' name='id' value='".$row[id]."'></td></tr><tr><td>Name:<td><input type='text' name='uname' value='".$row[uname]."'></td></tr><tr><td>Store:<td><input type='text' value='".$row[store]."' disabled></td><td>"; 
     echo "<select name='store'>"; 
     $displaystore=new admin(); 
     $displaystore->storeoption(); 
     echo"</select>"; 
     echo "</td></tr><tr><td>Date:<td><input type='text' name='date' value='".$row[date]."'></td></tr>"; 
     echo "<tr><td></td><td><input type='submit' name='submit' value='submit'></td></form>";  
    } 
    echo "</table>"; 
} 
?> 

Он отображает форму, но когда я нажимаю, он не работает !! То есть, когда я нажимаю кнопку «Отправить» из формы, ничего не происходит !!!
Кто-нибудь может помочь? Заранее спасибо.

+0

Вы отсутствует атрибут действия в вашем виде тега. Добавьте URL-адрес в действие, например 'action =" test.php "' – Keerthi

+0

Вы просматривали запрос/ответ в консоли браузера? –

+0

Naaa !!! Я связал это! Еще один результат –

ответ

1

Ну, я думаю, что @PierreDuc была правильная идея.

Сначала я установил index.php, чтобы корректно завершить заявление PHP if и JavaScript, чтобы правильно закрыть фигурные скобки

<head> 
<script> 
function showit(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","showuser.php?q="+str,true); 
     xmlhttp.send(); 
}  
//}            <-- fix1 
</script> 
<head> 
<body> 
<button onclick='showit(1)'>First User</button> 
<button onclick='showit(2)'>Second User</button> 
<button onclick='showit(3)'>Third User</button> 
<?php 
if(isset($_POST['submit'])){ 

}             <-- fix2 
?> 
<div id="txtHint"> 
</div> 
</body> 

Затем этот скрипт работал без ошибок

Затем я переехал <form>. ... </form> за пределами <table> ... </table> и все это сработало.

<?php 
if(isset($_GET['q'])){ 
    $id=$_GET['q']; 
    $con = mysqli_connect("localhost","root","","application"); 
    $sql="SELECT * FROM users WHERE id=$id"; 
    $result=mysqli_query($con,$sql); 

    echo "<form method='post'>";      <-- fix3 

    echo "<table>"; 
    while($row=mysqli_fetch_array($result)){ 

     echo "<tr><td><input type='radio' name='status' value='delete'>Delete</td><td><input type='radio' name='status' value='update' checked>Update</td></tr>"; 
     echo "<tr><td>ID:<td><input type='text' name='id' value='".$row[id]."'></td></tr><tr><td>Name:<td><input type='text' name='uname' value='".$row[uname]."'></td></tr><tr><td>Store:<td><input type='text' value='".$row[store]."' disabled></td><td>"; 
     echo "<select name='store'>"; 
     $displaystore=new admin(); 
     $displaystore->storeoption(); 
     echo"</select>"; 
     echo "</td></tr><tr><td>Date:<td><input type='text' name='date' value='".$row[date]."'></td></tr>"; 
     <-- next line...removed </form> added </tr> 
     echo "<tr><td></td><td><input type='submit' name='submit' value='submit'></td></tr>"; 
    } 
    echo "</table></form>";       <-- fix4 
} 
?> 

, а затем кнопку представить новую форму работала

+0

Спасибо, что ответите, он работает !!!! –

1

Форма внутри таблицы. Кажется, это плохо. Но я считаю, что это не работает, потому что форма отсутствует действие

<form method="post" action="">

+0

Добавление действия также имеет тот же результат –

+0

Проблема заключалась в том, что проблема заключалась в том, что ''

'' '', если вы пропустили 'action =', он просто запускает скрипт, который снова создал эту форму. Но, поскольку кто-то поддержал мой ответ, я подумал, что должен поделиться этим с вами, когда вы попали туда первым, все, что я сделал, было доказательством этого путем тестирования. – RiggsFolly

1

Вы ничего не делаете с почтовыми данными, на этой линии

echo "<form method='post'>"; 

вы говорите форма для публикации самому себе. Добавьте атрибут действия, или добавить дополнительный код, чтобы обработать данные, например, так:

<?php 
if($_POST) { print_r($_POST); } 

if(isset($_GET['q'])){ 
    $id=$_GET['q']; 
    $con = mysqli_connect("localhost","root","","application"); 
    $sql="SELECT * FROM users WHERE id=$id"; 
    $result=mysqli_query($con,$sql); 
    echo "<table>"; 
    while($row=mysqli_fetch_array($result)){ 
     echo "<form method='post'>"; 
     echo "<tr><td><input type='radio' name='status' value='delete'>Delete</td><td><input type='radio' name='status' value='update' checked>Update</td></tr>"; 
     echo "<tr><td>ID:<td><input type='text' name='id' value='".$row[id]."'></td></tr><tr><td>Name:<td><input type='text' name='uname' value='".$row[uname]."'></td></tr><tr><td>Store:<td><input type='text' value='".$row[store]."' disabled></td><td>"; 
     echo "<select name='store'>"; 
     $displaystore=new admin(); 
     $displaystore->storeoption(); 
     echo"</select>"; 
     echo "</td></tr><tr><td>Date:<td><input type='text' name='date' value='".$row[date]."'></td></tr>"; 
     echo "<tr><td></td><td><input type='submit' name='submit' value='submit'></td></form>";  
    } 
    echo "</table>"; 
} 
?> 

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

Другое дело, вы захватываете нефильтрованную переменную $ _GET, здесь $id=$_GET['q']; может вызвать некоторые проблемы с безопасностью. Посмотрите на экранирование этого ввода или с помощью подготовленных операторов.

+0

Все работает нормально, когда я иду showuser.php? Q = 1 и запускаю форму, но ничего не происходит в index.php из запроса AJAX !!! –

0

Возможно, вы попытаетесь выполнить регистрацию readistate на стороне клиента и проверить журналы на стороне сервера.

function showit(str) { 
 
    if (str.length == 0) { 
 
    document.getElementById("txtHint").innerHTML = ""; 
 
    return; 
 
    } 
 
    var xmlhttp = new XMLHttpRequest(); 
 
    var txtHint = document.getElementById("txtHint"); 
 
    var rState = document.getElementById("rState"); 
 
    xmlhttp.onreadystatechange = function() { 
 
    rState.innerHTML += "readyState: " + xmlhttp.readyState + ", status: " + xmlhttp.status + ", responseText: " + xmlhttp.responseText + "\n"; 
 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
 
     txtHint.innerHTML = xmlhttp.responseText; 
 
    } 
 
    } 
 
    xmlhttp.onerror = function() { 
 
    var html = "<b>ERROR</b>\n" 
 
    for (var k in xmlhttp) { 
 
     if (xmlhttp[k] && typeof xmlhttp[k] !== "function") { 
 
     html += k + ": " + xmlhttp[k] + "\n"; 
 
     } 
 
    } 
 
    rState.innerHTML += html; 
 
    } 
 
    xmlhttp.open("GET", "showuser.php?q=" + str, true); 
 
    xmlhttp.send(); 
 
}
<button onclick='showit(1)'>First User</button> 
 
<button onclick='showit(2)'>Second User</button> 
 
<button onclick='showit(3)'>Third User</button> 
 
<div id="txtHint"></div> 
 
<pre id="rState"> 
 
<h2>ready state log</h2> 
 
</pre>

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