2015-06-24 3 views
2

Я пытаюсь вставить данные в базу данных с помощью Ajax и PHP. Теперь то, что проблема заключается в том, что responseText не возвращает сообщение, но вставку сделано успешно Вот мой сценарийresponseText не возвращает сообщение об успешности

<script type="text/javascript"> 
    function aa() 
    { 
     var x=new XMLHttpRequest(); 
     x.open("GET","ajax.php?na="+document.getElementById("t1").value+" &ag="+document.getElementById("t2").value+"&des="+document.getElementById("t3").value+"&em="+document.getElementById("t4").value+" ",true); 
     x.send(null); 
     document.getElementById("d1").innerHTML=x.responseText; 
    } 
</script> 

Это мой ajax.php

<?php 

$mysql_host = 'localhost'; 
$mysql_database = 'proj1'; 
$mysql_user = 'root'; 
$mysql_password=''; 
$mysqli = mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_database); 
if (mysqli_connect_errno($mysqli)) 
{ 
    echo 'Failed to connect to MySQL: ' . mysqli_connect_error(); 
} 
$name = $_GET['na']; 
$ag = $_GET['ag']; 
$des = $_GET['des']; 
$em = $_GET['em']; 
$sql=mysqli_query($mysqli,"insert into ajax_sample (id,name,age,desig,email) values ('', '$name', '$ag' ,'$des', '$em' )"); 
if($sql) 
{ 
    echo "Successfully Inserted...."; 
} 
?> 

и это мой HTML страницы

 <form name="f1" method="post"> 
    <input type="text" id="t1" placeholder="enter name"><br><br> 
    <input type="text" id="t2" placeholder="enter age"><br><br> 
    <input type="text" id="t3" placeholder="enter designation"><br><br> 
    <input type="text" id="t4" placeholder="enter email"><br><br> 
    <input type="button" id="b1" value="submit" onclick="aa();"> 
    <div id="d1"></p></div> 
</form> 
+0

Если вы не знакомы с Ajax, я ** ** высоко рекомендую прочитать ** учебник ** первая: https://developer.mozilla.org/en- US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest –

+0

Если вы вызываете php-скрипт напрямую, вставляя «ajax.php? Na = smth & ag = smthElse ...» в адресную строку браузера. Отображается ли сообщение о успехе? –

+0

@felix Конечно, я пройду через это. Спасибо –

ответ

3

Вам нужно подключить в обратный вызов изменения асинхронного с onreadystatechange обрабатывать случай, когда запрос XHR делаются. Затем на нем будет установлен .responseText.

function aa() 
{ 
    var x=new XMLHttpRequest(); 
    x.open("GET","ajax.php?na="+document.getElementById("t1").value+" &ag="+document.getElementById("t2").value+"&des="+document.getElementById("t3").value+"&em="+document.getElementById("t4").value+" ",true); 
    x.onreadystatechange = function() { 
     if (x.readyState == 4 && x.statusCode == 200) { 
     document.getElementById("d1").innerHTML=x.responseText; 
     } 
    }; 
    x.send(null); 
} 

Важно понимать, что XMLHttpRequest является асинхронным. Это в основном означает, что вы запрашиваете URL-адрес для доступа через JavaScript, и движок браузера/JS отключается и делает это. Вы можете подключиться, когда запрос будет завершен с помощью onreadystatechange. Следующая страница MDN имеет таблицу с потенциальными значениями для readyState.

MDN: XMLHttpRequest и учебник Using XMLHttpRequest

+0

Спасибо, друг ... он работал ... –

+0

Проверка должна быть '' if (x.readyState == 4 && x.statusCode == 200) '', но вы также можете использовать '' x.addEventListener ('load', function() {... '', если вы предполагаете соответствие HTML5, что упрощает работу, так как вы не нужно включать этот оператор if. –

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