2016-11-01 14 views
0

私は本当にシンプルなリクエストを実行するリンクを作ろうとしていますが、返されたものがなぜ「未定義」なのかわかりません。jquery ajaxリクエストは未定義を返します

現在のところ、リンクはマニュアルページ要求をしていますが、それは単純なサブスクリプションであり、ページをリフレッシュしないようにします(したがってpreventDefault)。しかし、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'); 
     } 
    }); 
    }); 

を上クリックをキャプチャJSであり、ここでそれフィード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; 
    } 
    } 
} 

はどのようなことで、「データ」を返します

これは間違いないと思いますが、私はこの時点で何が欠けているのか分かりません。

答えて

2

変数dataには、期待される結果のJSON表現が含まれているため、わかりやすく文字列です。しかし、その文字列に含まれる情報にオブジェクトとしてアクセスしようとします。これが機能するためには、あなたが最初に返されたJSONをデコードすることにより、文字列からオブジェクトを作成する必要があります。

var myData = JSON.parse(data); 
alert(myData.result); 
... 
+0

データ型:「JSON」も、私は以前これと同じ方法を使用していた、 –

+0

ああ面白い感謝を助けるかもしれないが、テキストの代わりに数値を返すので、それは別の方法で取り上げられたと思います。 – NaughtySquid

0

結果をJSONとして解析する必要があります。 IE、data_array = JSON.parse(data);

関連する問題