2010-09-23 6 views
1

J'utilise php/ajax pour soumettre un formulaire sans actualisation de la page. Voici mes Files-jquery ajax demande erreur firebug

coupon.js

jQuery(document).ready(function(){ 
     jQuery(".appnitro").submit(function(e) { 
$.ajax({ 
      url  : "http://174.132.194.155/~kunal17/devbuzzr/wp-content/themes/street/sms.php", 
      type : "post", 
      dataType: "json", 
      data : $(this).serialize(), 
      success : function(data) { 
         for(var id in data) { 
          jQuery('#' + id).html(data[id]); 
         } 
         } 

     }); 
//return false or 
e.preventDefault(); 

    }); 

}); 

sms.php

<?php 
    //process form 
$res = "Message successfully delivered"; 
    $arr = array('mess' => $res); 
    echo json_encode($arr);//end sms processing 
    unset ($_POST); 
    ?> 

et est le code ici pour ma page html -

<form id="smsform" class="appnitro" action="http://174.132.194.155/~kunal17/devbuzzr/wp-content/themes/street/sms.php" method="post"> 
... 
</form> 
<div id="mess" style="background:green;"></div> 

Maintenant, quand je clique sur bouton soumettre rien ne se passe et affiche firebug suivant sous le panneau de la console -

POST http://174.132.194.155/~kunal17/devbuzzr/wp-content/themes/street/sms.php 

404 Not Found 1.29s `jquery.min.js (line 130)` 

Response 

Firebug needs to POST to the server to get this information for url: 
http://174.132.194.155/~kunal17/devbuzzr/wp-content/themes/street/sms.php 

This second POST can interfere with some sites. If you want to send the POST again, open a new tab in Firefox, use URL 'about:config', set boolean value 'extensions.firebug.allowDoublePost' to true 
This value is reset every time you restart Firefox This problem will disappear when https://bugzilla.mozilla.org/show_bug.cgi?id=430155 is shipped 

Quand je tournerai « extensions.firebug.allowDoublePost » à vrai, alors les résultats suivants montrent jusqu'à -

POST http://174.132.194.155/~kunal17/devbuzzr/wp-content/themes/street/sms.php 

404 Not Found 1.29s `jquery.min.js (line 130)` 

Response - 

{"mess":"Message successfully delivered"} 

quelqu'un peut me aider à fixer cette erreur Firebug de 404 introuvable. Et pourquoi montre-t-il jquery.min.js (line 130) à côté?

P.S -Ne vous inquiétez pas http://174.132.194.155/~kunal17/devbuzzr/wp-content/themes/street c'est mon url de base

+0

Il ne trouve pas le sms.php. L'URL dans votre JavaScript est donc incorrecte, est-ce dans le même dossier que votre page HTML avec le formulaire? –

Répondre

0

Vous pouvez essayer de mettre la déclaration e.preventDefault() avant l'appel .ajax $.

EDIT:

Mon x.html, correspond à votre page HTML


<!DOCTYPE html> 
<html> 
<head> 
<title>x</title> 
<script 
    type="text/javascript" 
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"> 
</script> 
<script type="text/javascript" src="/so/x.js"></script> 
</head> 
<body> 
<form id="smsform" class="appnitro" action="/so/x.php"> 
<input type="text" name="zz"> 
<input type="submit"> 
</form> 
<div id="mess" style="background:green;"></div> 
</body> 
</html> 

Mon x.js, correspond à votre coupon.js


jQuery(document).ready(function(){ 
    jQuery(".appnitro").submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url  : "/so/x.php", 
     type : "post", 
     dataType: "json", 
     data : $(this).serialize(), 
     success : function(data) { 
     for(var id in data) { 
      jQuery('#' + id).html(data[id]); 
     } 
     } 

    }); 
    //return false or 
    //e.preventDefault(); 
    }); 
}); 

My x. php, correspond à votre sms.php


<?php 
$res = "Message successfully delivered."; 
$arr = array('mess'=>$res); 
echo json_encode($arr); 
unset($_POST); 
?> 

Cela fonctionne réellement dans mon environnement, bien que je n'ai pas le reste du balisage HTML ou le code de traitement de formulaire PHP supplémentaire. Le "message envoyé avec succès". apparaît en vert directement sous le champ de saisie.

+0

@jt: non.aide pas – ayush

+0

Oui. Pas de cause première :) Dans mon cas, il a permis à l'appel AJAX de se terminer sans que toute la page ait à rafraîchir. Où est hébergé votre fichier jquery.min.js? – JTP

0

Lorsque l'intérieur de l'Ajax appellent cela fait référence à l'objet Ajax que vous devez faire ce

var __this = this; 

Avant d'entrer dans l'appel Ajax, il serait

data : __this.serialize() 

Ou chercher l'utilisation de contexte dans un appel Ajax dans Google. Ou sérialiser vos données dans une variable avant d'entrer dans l'appel Ajax.