jquery $ .get函数出现问题

时间:2010-02-19 19:57:37

标签: php jquery

我遇到了jquery $ .get函数的问题。 我正在尝试从PHP文件中获取数据以检查特定用户是否已订阅,并且是否被其他用户记录在忽略列表中。

使用这个jquery代码,我只能使用PHP文件从MySql中获取这两个数据中的一个。

jquery代码是:

$(document).ready(function(){
    $.get("getdata.php", function(returned_data) { 
        if(returned_data === "1") {
            $("div#wall").html('user has no subscription');
            $("#message_wall").attr("disabled", "disabled");
            return false;
        }
    });
});

PHP文件有MySQL查询,该页面如下所示:

$query = mysql_query("SELECT * FROM subscription WHERE id=$ipr");
$result = mysql_fetch_assoc($query);

if (time() > $result['date']) {
    echo "1";
} else {
    echo "5";
}


$res = mysql_query("SELECT * FROM ignor WHERE migid=$ipr AND igid=$id") or die(mysql_error());
$num_rows = mysql_num_rows($res);
if ($num_rows >= "1") {
    echo "2";
}

我需要从jquery $ .get函数中获取每个PHP回应响应代码的separeted .attr()和.html()(对于echo“1”,echo“2”和echo“5”)

我怎样才能用Jquery $ .get?

来做到这一点

4 个答案:

答案 0 :(得分:2)

正如Teja所写,您可以在JavaScript代码中添加更多if-else块来处理不同的返回值。

但更重要的是 - 如果你需要返回超过1条信息,你真的应该把它编码为(例如)服务器端的JSON。有内置的PHP库,以及JSON.org上的JSON javascript库。

答案 1 :(得分:1)

您希望$.getJSON允许多个返回值

请参阅the docs

然后将PHP格式输出为JSON,如

{ "subscribed": true, "ignored": false }

然后你的javascript看起来像这样

$.get("getdata.php",
function(returned_data)
{ 

   if(returned_data.subscribed){
      ... 
   }

   if(returned_data.ignored){
      ...
   }

});

答案 2 :(得分:1)

像杰克说的那样,使用$ .getJSON更好。 jQuery内置支持从Web服务器接收JSON作为响应,因此我们在javascript端不需要任何额外的JSON库来完成这么简单的任务。另外在PHP方面,我们可以使用手动JSON为这个简单的场景构建JSON响应(发送到javascript)。

PHP代码看起来像这样:

$query = mysql_query("SELECT * FROM subscription WHERE id=$ipr");
$result = mysql_fetch_assoc($query);

if (time() > $result['date']) {
    echo '{ "resultCode":1, "description":"message 1 to be displayed to user" }';
} else {
    echo '{ "resultCode":5, "description":"message 5 to be displayed to user" }';
}

$res = mysql_query("SELECT * FROM ignor WHERE migid=$ipr AND igid=$id") or die(mysql_error());
$num_rows = mysql_num_rows($res);
if ($num_rows >= "1") {
    echo '{ "resultCode":2, "description":"message 2 to be displayed to user" }';
}

然后可以将javascript更新为以下内容:

$(document).ready(function(){
    $.getJSON("getdata.php", function(returned_data) { 

        // returned_data is now a javascript object with 2 properties:
        //   returned_data.resultCode
        //   returned_date.message

        // if the user has a valid subscription
        if (returned_data.statusCode === 5) {
            $("#message_wall").removeAttr("disabled");
            return true;
        }
        // if the user has an invalid subscription, show the message returned from the PHP
        else {
            $("div#wall").html(returned_data.message);
            $("#message_wall").attr("disabled", "disabled");
            return false;                
        }
    });
});

此外,如果您需要能够将多个响应发送回javascript,您可以将JSON响应对象构建到javascript数组中,以便PHP代码的响应如下所示:

[ { "resultCode":1, "description":"msg" }, { "resultCode":2, "description":"msg" }, ... ]

然后你的javacript将在returned_data参数中接收一个数组,该数组可以使用内置的$ .each()函数进行迭代。

有关JSON的更多信息,请参阅json.org

答案 3 :(得分:0)

如果我理解你的问题,你要问的是使用不同的javascript来执行来自服务器的不同响应。如果是这样,您正在使用if-elseif回调中的success正如您现在所使用的那样。