Gestionnaire AJAX POST provoquant "exception non interceptée"
J'ai donc été à se taper la tête contre mon bureau pour quelques heures sur celui-ci et je ne suis pas aller nulle part donc de l'aide serait vraiment appréciée.
Le code ci-dessous a deux jquery gestionnaires d'événement qui déclenche une requête ajax. La première utilise l'OBTENIR et les données qu'il obtient en retour du serveur est encodé en JSON - il fonctionne très bien. La seconde ( "bouton#addTx" ) renvoie la cause de Firebug pour produire cette erreur:
uncaught exception: [Exception...
l'invite "abandonné par l'utilisateur" nsresult:
"0 x 80040111 (NS_ERROR_NOT_AVAILABLE)"
emplacement: "JS cadre ::
resource://gre/components/nsPrompter.js
:: openTabPrompt :: la ligne 468" données:
aucun]Ligne 0
ce qui n'aide pas du tout. Du côté serveur, le script est en cours d'impression du html brut, à l'écran et l'objectif est que jquery html remplacer sera utilisé pour mettre à jour la page qui initie la demande. Les données sont Affichées correctement dans la base de données mises à jour, mais au-delà de que je n'ai aucune idée. J'ai réécrit pour essayer d'OBTENIR et de toujours produire le même message d'erreur 🙁
Aide serait étonnant - je vous remercie, Simon
$(document).ready(function(){
$("button.delete").click(function(){
var txid = this.id;
var amountID = "#amount" + txid;
var amount = $(amountID).html();
//<![CDATA[
var url = "delete.php?txid=" + txid + "&am=" + amount;
$.ajax({
type: "GET",
url: url,
success: function(msg){
txid = "ul#" + txid;
$(txid).hide();
var values = msg;
var e = "#" + values.category + "AmountLeft";
var a = values.amount;
$(e).html(a);
}
});
});
$("button#addTx").click(function(){
//<![CDATA[
var url = "addTran.php";
//var dataV = var data = "category=" + document.getElementById("category").value + "&what=" + document.getElementById("what").value + "&amount=" + document.getElementById("amount").value + "&date=" + document.getElementById("date").value;
$.ajax({
type: "POST",
url: "addTran.php",
//async: false,
data: "category=Groceries&what=Food&amount=2.33&date=2/3/2011",
success: function(msg){
$("transList").replaceWith(msg);
}
});
});
});
et ici, c'est le serveur de script côté
<?php
session_start();
include('functions.php');
//if the user has not logged in
if(!isLoggedIn())
{
header('Location: index.php');
die();
}
$category = $_POST['category'];
$what = $_POST['what'];
$amount = $_POST['amount'];
$date = $_POST['date'];
$category = mysql_real_escape_string($category);
$what = mysql_real_escape_string($what);
$amount = mysql_real_escape_string($amount);
$date = mysql_real_escape_string($date);
$date = convertDate($date);
//add trans to db
include('dbcon.php');
$query = "INSERT INTO transactions ( category, what, amount, date) VALUES ( '$category','$what','$amount','$date');";
mysql_query($query);
//grab the remaining amount from that budget
$query = "SELECT amount_left FROM cards WHERE category = '$category';";
$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$oldAmountLeft = $row["amount_left"];
//update the amount left
$amountLeft = $oldAmountLeft - $amount;
mysql_free_result($result);
//add new value to db
$query = "UPDATE cards SET amount_left = '$amountLeft' WHERE category = '$category';";
mysql_query($query);
//generate the list of remaining transactions, print to screen to send back to main page
$query = "SELECT txid, what, amount, date FROM transactions WHERE category = ('$category');";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$d = convertDateReverse($row["date"]);
$what = $row["what"];
$amount = $row["amount"];
$txid = $row["txid"];
?>
<li><ul class="trans" id="<? echo $txid; ?>"><li class="date"><? echo $d; ?></li><li class="what"><? echo $what; ?></li><li class="amount" id="amount<? echo $txid; ?>"><? echo $amount; ?></li><button class="delete" id="<? echo $txid; ?>">Delete</button><li></li></ul></li>
<?
}
mysql_free_result($result);
mysql_close();
header("Content-type: application/x-www-form-urlencoded"); //do I need this? I have a " header("Content-type: application/json"); " in the working one
?>
source d'informationauteur SimonBarker
Vous devez vous connecter pour publier un commentaire.
PROBLÈME RÉSOLU: ainsi, dans le code html du formulaire qui contient les champs de données doit avoir un
!
Merci à tous pour l'aide les gars, j'ai mis en œuvre toutes vos suggestions et mon code est maintenant soooo beaucoup plus petit et plus facile à gérer!
Acclamations
Simon
Thx pour l'affichage de la solution. De même cogné la tête en essayant de résoudre un problème semblable avec NS_ERROR_NOT_AVAILABLE sans chance. Utile pour les personnes utilisant Django <--> Javascript pour faire XMLHttpRequests. Sur le Django côté, il y a un
...qui correspond à la NS_ERROR qui s'affiche dans la console de firebug pour le JS échec.(googleBait), Il est difficile de savoir par où commencer le suivi, le problème côté serveur ou côté client.
Merci encore une fois.