0

我正在尝试编写一个 ajax 函数,这样当我单击提交按钮时,name =“Add”,它将调用一个名为“addtobucketlist.php”的 php 文件并运行其中的函数。

这是我的名为“script.js”的文件中的 ajax 函数,它不起作用,我不知道为什么。(我已经验证了第 2 行的 hideshow('loading',1); 正在工作。)

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 类完成。

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.'"}';
}

任何帮助,将不胜感激!

4

2 回答 2

0

尝试使用

if (!empty($_POST['Add'])) 
{

而不是 isset。添加

error: function( jqXHR, textStatus, errorThrown )

函数到您的 ajax 调用以查看抛出的错误是什么。

您在 php _POST 变量“Add”中使用大写“A”,而在您的 html 表单中,它是小写的 a。

您从 php 脚本输出的文本可能无法识别为正确的 json。改为在输出值数组上使用 php 函数 json_encode()。

于 2013-06-26T03:51:45.560 回答
0

不需要操作,因为您是通过 ajax post
remove action="http://utourpia.me/php/addtobucketlist.php

remove msg.statuschecks from$.ajax执行的,因为它只会在成功时执行

于 2013-06-26T04:56:37.690 回答