我遇到了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?
来做到这一点答案 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)
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
正如您现在所使用的那样。