我正在尝试编写一个ajax函数,当我单击提交按钮时,name =“Add”,它将调用一个名为“addtobucketlist.php”的php文件并运行其中的函数。
这是我的文件中名为“script.js”的ajax函数,它无效,我不明白为什么。 (我已经确认隐藏展示('loading',1);第2行正在运行。)
function Addtobucketlist(){
hideshow('loading',1); //line 2
error(0);
$.ajax({
type: "POST",
url: "http://utourpia.me/php/addtobucketlist.php",
data: $('#addBucket').serialize(),
dataType: "json",
success: function(msg){
if(parseInt(msg.status)==1)
{
//hide the form
$('.form').fadeOut('slow');
//show the success message
$('.done').fadeIn('slow');
}
else if(parseInt(msg.status)==0)
{
error(1,msg.txt);
}
hideshow('loading',0);
}
});
}
以下是我的header.php
$(document).ready(function(){
$('#addBucket').submit(function(e) {
Addtobucketlist();
e.preventDefault();
});
});
下面是我的表格,这是写的,当运行ajax时,表格将被隐藏,并且将显示div class done。
echo '<div class=form>';
echo '<form id=addBucket action="http://utourpia.me/php/addtobucketlist.php" method=post>';
echo '<input type="submit" name="add" value="Add" /><img id=loading src="../../images/loading.gif" alt="working.." />';
echo '</form>';
echo '</div>';
echo '<div class="done"><p>Added successfully! <br /></p>';
echo '</div>';
下面的是addtobucketlist.php:
if (isset($_POST['Add']))
{
add_to_bucket_list($location_id, $username);
die(msg(1,"<p>Added!</p>"));
}
else
{
var_dump($location_id);
var_dump($username);
}
function msg($status,$txt)
{
return '{"status":'.$status.',"txt":"'.$txt.'"}';
}
任何帮助将不胜感激!
答案 0 :(得分:0)
尝试使用
if (!empty($_POST['Add']))
{
而不是isset。添加
error: function( jqXHR, textStatus, errorThrown )
对你的ajax调用起作用,看看抛出的错误是什么。
你在php _POST变量'Add'中使用大写'A',在你的html表单中它是一个小写的a。
您从php脚本输出的文本可能无法识别为正确的json。而是在输出值数组上使用php函数json_encode()。
答案 1 :(得分:0)
通过ajax邮件执行此操作不需要执行操作左移action="http://utourpia.me/php/addtobucketlist.php
从msg.status
删除$.ajax
只检查将在成功时执行