ajax-code definieert een fout of reageert niet

Ik ben nieuw voor ajax. Studies basaal van wrook's blog.
Ik heb de onderstaande code gebruikt om in te voegen in mijn db met ajax.
Maar de code print niets anders dan 'Wacht maar even'.

de JsFiddle link Ajax-code is als volgt: -

/* ---------------------------- */
/* XMLHTTPRequest Enable */
/* ---------------------------- */

function createObject() {
var request_type;
var browser = navigator.appName;
if (browser == "Microsoft Internet Explorer") {
    request_type = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
    request_type = new XMLHttpRequest();
}
return request_type;
}

var http = createObject();

function insertReply() {
if (http.readyState == 4) {
    var response = http.responseText;
   //else if login is ok show a message: "Site added+ site URL".
    document.getElementById('insert_response').innerHTML = 'User added:' + response;
}
}

/* -------------------------- */
/* INSERT */
/* -------------------------- */
/* Required: var nocache is a random number to add to request. This value solve an Internet          Explorer cache issue */
var nocache = 0;

 function insert() {
// Optional: Show a waiting message in the layer with ID login_response
document.getElementById('insert_response').innerHTML = "Just a second...";
// Required: verify that all fileds is not empty. Use encodeURI() to solve some issues about   character encoding.

var username = encodeURI(document.getElementById('Username').value);
var name = encodeURI(document.getElementById('Name').value);
var password = encodeURI(document.getElementById('Password').value);
document.getElementById('insert_response').innerHTML = 'h ' + username + ' ' + name;
// Set te random number to add to URL request
nocache = Math.random();

// Pass the login variables like URL variable
http.open('get', 'insert.php?name=' + name + '&username=' + username + '&password=' + password);
http.onreadystatechange = insertReply;
http.send(null);
}​

De php-code om db in te voegen is:

  if(isset($_GET['name']) && isset($_GET['username'])&& isset($_GET['password'])){

 $name= $_GET['name'];
 $username= $_GET['username'];
  $password= $_GET['password'];
  $sql = "INSERT INTO `vidyasims`.`user_accounts` (`UserID`, `UserName`, `Name`, `Password`)   VALUES (NULL, '. $username. ','. $name. ', '. $password. ');";
 $insertSite= mysql_query($sql) or die(mysql_error());

  //If is set URL variables and insert is ok, show the site name -->
 echo $username;
} else { 
 echo 'Error! Please fill all fileds!';

ondersteuning is welkom. Bij voorbaat dank.

Opmerking- De bovenstaande code doet een nieuwe gebruiker toevoegen aan db!

2
@copy is er een probleem met SQL-code! of is het slecht om SQL te gebruiken via ajax
toegevoegd de auteur Abel Jojo, de bron
Dit is jQuery getagd, maar ik zie geen jQuery.
toegevoegd de auteur nickb, de bron
Merk op dat IE11 "Microsoft Internet Explorer" niet retourneert voor appName, maar geeft NetScape als resultaat msdn.microsoft.com/en-us/library/ie/ms533079 (v = vs.85) .aspx
toegevoegd de auteur light94, de bron
Heb je de code ook in de viool geplakt? omdat er een verschil is in de "Gebruikersnaam" in JavaScript en html
toegevoegd de auteur light94, de bron
toegevoegd de auteur copy, de bron

2 antwoord

U mist ids voor uw html-formulierinvoer en kunt document.getElementById() niet gebruiken om hun waarden snel op te halen:

<td><input type="text" id="Name" name='Name' value='' >
</td> <td><input type="text" id="Username" name='UserName' value=''></td> <td><input type="password" id="Password" name='Password'></td>
1
toegevoegd

waarom je jQuery Ajax niet op deze manier gebruikt, ik denk dat het de heel eenvoudige en gemakkelijke manier is om je werk te doen:

JQuery-code

 <script language="javascript">
  $(document).ready(function(){
  $("#myHtmlButtonID").bind("click",function(){
       $('#insert_response').html("Just a second...");
       var username = $('#Username').val();
       var name = $('#Name').val();
       var password = $('#Password').val();
       /* add some validation if needed here */
       $.ajax({
                 url: "yourPHPpage.php",
                 data: {
                       name: name,
                       username:username,
                       password: password
                       },
                type: "get",
                success: function(txt){
                      $('#insert_response').html('User added:' + response);
                      },
                error: function(xhr){
                      $('#insert_response').html('Error: - '+xhr.status+ ' '+ xhr.statusText);  
                      }
               });
     });
});
</script>
0
toegevoegd