我正在尝试让链接执行一个非常简单的请求,但我似乎无法弄清楚为什么我返回的是" undefined"。
目前该链接是一个手动页面请求,但它是一个如此简单的订阅,我希望它不刷新页面(因此preventDefault)。但如果JS无法正常工作或被阻止,那么链接应该是正常的页面请求(两全其美?)。
这是捕获链接点击的JS
$('#subscribe-link').click(function(e)
{
e.preventDefault();
var type = $(this).data('sub');
$.post('/includes/ajax/subscribe-article.php', { 'type':type },
function(data)
{
alert(data.result);
if (data.result == 'subscribed')
{
alert('subscribe');
}
else if (data.result == 'unsubscribed')
{
alert('unsubscribe');
}
});
});
以下是提供它的PHP:
if($_POST && isset($_SESSION['user_id']) && $_SESSION['user_id'] != 0)
{
if (isset($_POST['type']))
{
if ($_POST['type'] == 'subscribe')
{
echo json_encode(array("result" => "subscribed"));
return;
}
if ($_POST['type'] == 'unsubscribe')
{
echo json_encode(array("result" => "unsubscribed"));
return;
}
}
}
现在,我已经检查了什么"数据"自己返回的是:
{"result":"unsubscribed"}
哪个是对的,我不确定这次我错过了什么。
答案 0 :(得分:2)
由于变量data
包含预期结果的JSON表示,因此它显然是一个String。然而,您尝试将该字符串中包含的信息作为对象进行访问。为此,首先需要通过解码返回的JSON来创建字符串中的对象:
var myData = JSON.parse(data);
alert(myData.result);
...
答案 1 :(得分:0)
您需要将结果解析为JSON。 IE,data_array = JSON.parse(data);