2010-11-21 15 views
3

ok、私は助けが必要だと思います!私が考えることができるすべてのキーワードで検索しましたが、私はまだ理解できません。助けてください。もっとPHPの人で、jQueryを使い始めました。PHP json_encode配列をjQueryに送信

基本的には、クリック機能からjQueryポストを送信することを試みています。私のPHP関数によって返されるものに基づいて、2つのdivを表示/非表示にします。 =======

// ====================== PHPコード:私のPHPの機能は、同様に、2つの単純な値を持つ「json_encode」の配列を返します。 =============================

$message_for_user = "blah blah"; 
$calculatedValue = 1230; 
$responseVar = array(
        'message'=>$message_for_user, 
        'calculatedValue'=>$calculatedValue 
        ); 
echo (json_encode($responseVar)); 

// ============== ==== PHPコードエンド==================================

私のjavascriptのコードが想定していますPHPで返された値を受け入れます:

// ====================== Javascriptコードを================ ==================

$("div.calculator_result").click(function() 
{ 
    $.post('myCalculator.php' ,{qid:itemID},function(response) 
    { 
     $("div.calculation_value").show(500).html(response['calculatedValue']); 
     $("div#message_for_user").show(500).html(response['message']); 
    } 
} 

// ====================== Javascriptのコードエンド====================== ============

残念ながら、私のプロジェクトのjavascriptの側に、divタグは私が間違っている私のPHP関数によって返された値....で更新されていませんか?私は私の質問ではっきりしていたと思いますが、そうでない場合は私に知らせてください。私は必要な追加情報を提供します。

もう一つは、以前は、計算値(echo $ calculatedValue)が1つだけの値をecho'ingしていましたが、すべてがうまくいきました。物事はdataTypeオプション設定してみてください

答えて

18
var json = $.parseJSON(response); alert(json.message); 
+0

答えに基づいて、これは私が試したものです。var resp_object = $ .parseJSON(response); $( "div.calculation_value").html(resp_object.calculatedValue);残念なことに、その痛みは私のために働く、仲間。私はPHPのバージョン5.2.14で、それが役立つ場合は – SIndhu

+0

、それは動作します。ねじれた理由のために、1.4.1より古いjqueryのバージョンがありました.jQuery.parseJSONが1.4.1に追加されたようです – SIndhu

2

をいけない仕事:

$.post('myCalculator.php' ,{qid:itemID},function(response) 
{ 
    $("div.calculation_value").show(500).html(response['calculatedValue']); 
    $("div#message_for_user").show(500).html(response['message']); 
}, 'json'); 

NBを私はまた、あなたがそれらを見逃している決算ブラケット)を追加しました。

1

JSON応答を解析する必要があります。 jQueryにはこの組み込みの機能があります(うれしいのは、IE6と7はJSONをネイティブにサポートしていないためです)。

$.parseJSON(response) 

そして、あなたはJSON形式に慣れていない場合は、その後、(Firebugのまたは類似を使用して)レスポンスヘッダをチェックし、それはあなたが望むどのキーの値を選ぶのに役立ちます。これに等しい変数を設定します。ループしている場合は、応答が解析されたら for in statementsを調べます。

EDIT:$.getJSONを使用して、解析が自動的に行われます。少なく書いてください。 :)

+0

彼が必要とするものはPOSTです – Kemo

0

あなたがしなければならないことは、あなたがデータ型 "json"を受け取っているというAjax呼び出しに伝えることです。言い換えれば...

$.ajax({ 
    url: "external_file", 
    method:"post", 
    dataType: "json", // **************** Note dataType**************** 
    success:function(response){ 
     console.log(response) 
     // Response will be a javascript array, instead of a string. 
    }, 
    error: function(){ 
     alert('something went wrong.') 
    } 
}) 
関連する問題