我正在编写一个通常的jquery + AJAX代码,但它不起作用,我真的不知道为什么! 这是我的代码无法正常工作的部分:
var data = $("#data_res").val();
var infoData = data.split("/");
var dataDb = infoData[2]+"-"+infoData[1]+"-"+infoData[0];
$.ajax({
type: "POST",
url: "reserva_ajax.php",
data: {action: 1, data: dataDb},
success: function(retorno)
{
var qtd = parseInt(retorno, 10);
alert("Qtd: "+qtd);
if(qtd > 0) {
//for now, qtd is always 0
}
else{
var id = $("#id_func").val();
var obs = $("#obs_res").val();
alert("id: "+id+" | obs: "+obs+" | dataDB: "+dataDb);
$.ajax({
type: "POST",
url: "reserva_ajax.php",
data: {action: 1, data: dataDb},
succes: function(a)
{
alert("sucess! a="+a);
},
error: function(b)
{
alert("Error!");
});
alert("passed =/");
}
},
error: function()
{
alert("Erro! Try again.");
}
也许在另一个ajax请求中成为ajax请求的事实会导致错误。但我认为这不是问题,因为ajax只在第一个完成后执行。
第一个ajax运行正常,然后显示“Qtd:0”。然后代码进入else条件(因为qtd不大于0),显示第二个警报: alert(“id:”+ id +“| obs:”+ obs +“| dataDB:”+ dataDb); 一切都好。
然而,我遇到了问题!执行ajax(我认为)但它不执行成功块既不是错误块,所以打印的警告是: alert(“传递= /”);
我知道ajax是异步的,成功和错误警报可能会在“传递”之后执行,但它们永远不会被执行。
请有人可以帮助我吗?!
php代码是:
<?php
include_once 'classes/reserva_class.php';
if(isset($_POST["action"]))
{
$action= (int) $_POST["action"];
switch($action)
{
case 1:
echo Reserva::getQtdReservasData($_POST["data"]);
break;
case 2:
echo "=)";
break;
}
}
?>
答案 0 :(得分:1)
看起来您在第二次AJAX调用时错过了“错误”事件的结束大括号。
如果这不能解决问题,请尝试添加“完成”事件以查看您的ajax页面返回的内容,如果您从“错误”或“成功”中得不到任何回复。
答案 1 :(得分:1)
您错过了}
动作回调中的结束error
,而您的success
回调实际上被称为succes
。它应该是这样的:
$.ajax({
type: "POST",
url: "reserva_ajax.php",
data: {action: 1, data: dataDb},
success: function(a)
{
alert("sucess! a="+a);
},
error: function(b)
{
alert("Error!");
}
});
顺便说一句,你不应该'认为'你的ajax请求正在被执行...弹出Opera Dragonfly或WebKit的Web Inspector或你正在使用的任何浏览器的任何开发者工具并点击'Network'选项卡,您将能够看到每个请求,并确保发送2。
答案 2 :(得分:1)
我认为你错误地输入了一个ajax选项:输入“Success”而不是“success”