Ajax总是给出正面价值。怎么纠正呢?

时间:2014-08-13 06:03:32

标签: javascript php ajax smarty

我的PHP代码

function MailList()
{
    $this->Form['email'] = $_POST["email"];
    $index = $this->mgr->getMailList($_POST["email"]);
}


//sql code

function getMailList($email)
{           
    $mailArray = Array();
    $sql = "select vchEmail as mailName from tbDownloadDetails  where vchEmail='".$email."'";
    $result = mysql_query($sql, $this->con);
    $isexist=false; 

    while ($row = mysql_fetch_array($result))
    {
        $isexist=true;
        array_push($mailArray, $row['mailName']);
    }       
    return ($mailArray);
}

Ajax代码

function getMailList(e)
{       

    $value=e;
    $.ajax({
            url:'http://example.com/report/' + "filedownload.html",
            type:"POST",
            data:{action:'MailList',email:$value},
            dataType:"html",
            success:function (resp) {
                if (resp !== '') {
                    alert("Success");
                } else {
                    alert("Fail");
                    return false;
                }
            }
        });
         return false;
}   

这是我的代码。但它不起作用。当我输入电子邮件ID时,它始终显示(警报)成功,如果它不存在于db中。这就是代码总是带来正值。如何纠正代码。 提前谢谢....

4 个答案:

答案 0 :(得分:1)

在你的回复中,你正在返回一个数组。如果根本不存在电子邮件,它将返回一个空数组..

因此您的回复将是

  

[]而不是''。

在成功回调中更改您的比较。并检查这样。

  

resp.length === 0

答案 1 :(得分:0)

我假设在调用脚本的动作MailList时调用了getMailList()。

您正在返回一个数组。如果找不到电子邮件地址,则脚本将返回一个空数组。尝试检查resp.length === 0:)

答案 2 :(得分:0)

试试这样:

<?php 

function getMailList($email)
{           
    $mailArray = Array();
    $sql = "select vchEmail as mailName from tbDownloadDetails  where vchEmail='".$email."'";
    $result = mysql_query($sql, $this->con) or die(mysql_error());
    if(mysql_num_rows($result)>0){
        while ($row = mysql_fetch_array($result))
        {
            array_push($mailArray, $row['mailName']);
        }   
    }
    else{
        return false;
    }


    return count($mailArray)>0 ? $mailArray : false;
}

?>

Ajax代码:

function getMailList(e)
{       

    $value=e;
    $.ajax({
            url:'http://example.com/report/' + "filedownload.html",
            type:"POST",
            data:{action:'MailList',email:$value},
            dataType:"html",
            success:function (resp) {
                if (resp !== false) {
                    alert("Success");
                } else {
                    alert("Fail");
                    return false;
                }
            }
        });
         return false;
}

答案 3 :(得分:0)

返回字符串而不是return 'true';或使用===进行比较。