$ .ajax函数()在提交表单时不起作用

时间:2013-06-26 03:45:16

标签: php javascript ajax

我正在尝试编写一个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.'"}';
}

任何帮助将不胜感激!

2 个答案:

答案 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只检查将在成功时执行