Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php AJAX后期处理程序导致;“未捕获的例外情况”;_Php_Javascript_Ajax_Post - Fatal编程技术网

Php AJAX后期处理程序导致;“未捕获的例外情况”;

Php AJAX后期处理程序导致;“未捕获的例外情况”;,php,javascript,ajax,post,Php,Javascript,Ajax,Post,所以我在这件事上用头撞了我的桌子好几个小时了,我哪儿也去不了,所以我真的很感激你的帮助 下面的代码有两个jquery事件处理程序,它们触发ajax请求。第一个使用GET,它从服务器返回的数据是JSON编码的——工作正常。第二个(“按钮#addTx”)返回导致Firebug产生此错误: 未捕获异常:[异常。。。 “提示被用户中止”nsresult: “0x80040111(NS\u错误\u不可用)” 位置:“JS帧:: resource://gre/components/nsPrompter.js

所以我在这件事上用头撞了我的桌子好几个小时了,我哪儿也去不了,所以我真的很感激你的帮助

下面的代码有两个jquery事件处理程序,它们触发ajax请求。第一个使用GET,它从服务器返回的数据是JSON编码的——工作正常。第二个(“按钮#addTx”)返回导致Firebug产生此错误:

未捕获异常:[异常。。。 “提示被用户中止”nsresult: “0x80040111(NS\u错误\u不可用)” 位置:“JS帧:: resource://gre/components/nsPrompter.js ::openTabPrompt::第468行“数据: 否]

第0行

这对我毫无帮助。服务器端脚本将原始html打印到屏幕上,目的是使用jquery html替换来更新发起请求的页面。数据在数据库更新时正确发布,但除此之外,我没有任何线索。我重写了它以尝试GET,但仍然产生相同的错误:-(

帮助将是惊人的-谢谢你,西蒙

$(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);
        }
    });
});
});
$(文档).ready(函数(){
$(“button.delete”)。单击(函数(){
var txid=this.id;
var amountID=“#金额”+txid;
var amount=$(amountID).html();
// 
这是服务器端脚本

<?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

?>

问题已解决:因此,在html标记中,保存数据字段的表单应具有

onsubmit="return false;"
在里面

感谢所有的帮助,我已经实现了你所有的建议,我的代码现在变得更小,更易于管理

干杯


Simon

感谢您发布解决方案。同样,我在尝试解决类似的问题时也撞到了头,因为NS_错误在运气不好的情况下不可用。对于使用Django Javascript执行XMLHttpRequests的人也很有用。在Django方面,有一个

   error: [Errno 32] Broken pipe 
…这与firebug控制台中出现的JS故障对应。(googleBait)很难知道从哪里开始跟踪问题-服务器端还是客户端


再次使用Thx。

你不使用它有什么原因吗?它会让你的生活更轻松。还有,标题()结尾的调用不应该在那里。如果你想设置它,把它放在顶部,内容类型应该是text/htmlm可能是一个愚蠢的问题,但是如果你使用jQuery,为什么不直接使用jQuery的ajax函数呢?这会为你节省很多麻烦。哦,输入所有这些数据的html是:
GroceriesLife What:Amount:Date:Add
你好,Jeroen和Jesse,谢谢你的回复-我没有使用这些函数,因为我昨天才开始使用jquery,所以没有研究过它-我会研究一下。可能有助于解决错误。最后我还会删除标题类型。谢谢你在Firebug中看到的错误,是从Respon中看到的吗请求的se选项卡?如果没有,响应选项卡中有什么?当您导航到页面(或者,更确切地说,将表单发布到页面)时会发生什么同步?在没有Ajax的情况下转到一个有问题的页面可以帮助确保它是可靠的,然后再将异步调用的复杂性添加到mix.onsubmit、wtf中?很好,感谢您发布这篇文章,您救了我一天!jQuery(#表单”).submit(函数(){return false;});最糟糕的是,当您执行jQuery.ajax POST请求时,错误会在Mozilla中显示。但是如果执行jQuery.get-get请求,则不会显示错误,但当您实现此代码时,它会对两种方式进行更正。在IE中,它只会显示您有错误。我没有尝试Chrome。通过这样做,您不需要阻止提交(如果表单上的其他内容需要调用submit),那么您只是在防止AJAX调用事件中的默认行为。我不确定此代码是否适用于所有人…jQuery(#”)。单击(函数(e){e.preventDefault();});