2009-06-24 9 views
0

私の質問は:どのように私のPHPスクリプトは、jsonの型データ を送信し、成功または完全な機能に戻って受信できますか?jsonデータをajaxコールから戻す

それが仕事をdiddn'tので、私は私のウェブサイト 上で動作するようにthis chatfunctionを取得しようとしていた、私はそれがJSON方法とは何かを持っていた場合 をチェックするためのコードをオフ最小限の部分を作成しました。

私はphpscriptが処理された後にセッション名を返すことができるかどうかをテストしました "johndoe"ではなく "undefined"です。

何が問題なのかわかりません。 クリエイターページのコメントが表示されていれば、スクリプトは他の人にはうまくいきました。

この

が、私のtestingcodeリチャード

答えて

1

リチャード

<?php 
session_start(); 
$_SESSION['username'] = "johndoe" ;// Must be already set 
?> 

<script type="text/javascript" src="includes/jquery.js"></script> 
<script language="JavaScript"> 
$(document).ready(function(){ 
$("#testjson").click(function(e){ 
startJsonSession(); 

    return false; 
    }); 


function startJsonSession(){ 
    $.ajax({ 
     url: "jsontest.php?action=startjson", 
     cache: false, 
     dataType: "json", 
     complete: function(data) { 
      username = data.username; 
      alert(username); 
     } 

    }); 
} 


}); 
</script> 

<?php 
//the php script 

if ($_GET['action'] == "startjson") { startjsonSession(); } 



function startjsonSession() { 
    $items = ''; 


    /*if (!empty($_SESSION['openChatBoxes'])) { 
     foreach ($_SESSION['openChatBoxes'] as $chatbox => $void) { 
      $items .= chatBoxSession($chatbox); 
     } 
    } 


    if ($items != '') { 
     $items = substr($items, 0, -1); 
    }*/ 

header('Content-type: application/json'); 
?> 
{ 
     "username": "<?php echo $_SESSION['username'];?>", 
     "items": [ 
      <?php echo $items;?> 
     ] 
} 

<?php 


    exit(0); 
} 

?> 

のおかげで、あなたは、PHPでjson_encode()関数になっているはずです。配列をJSONに素早く変換し、大量のデータを含むJSON構文の微妙なニュアンスに対処する必要がなくなります。


アップデート:修正コード

<?php 

    session_start(); 
    $_SESSION['username'] = "johndoe" ;// Must be already set 

?> 

<script type="text/javascript" src="includes/jquery.js"></script> 
<script language="JavaScript"> 
$(document).ready(function(){ 

    $("#testjson").click(function(e){ 
     startJsonSession(); 
     return false; 
    }); 

    function startJsonSession(){ 
     $.ajax({ 
      url: "jsontest.php?action=startjson", 
      cache: false, 
      dataType: "json", 
      complete: function(data) { 
       username = data.username; 
       alert(username); 
      } 

     }); 
    } 

}); 
</script> 

<?php 

    if ($_GET['action'] == "startjson") { 
     startjsonSession(); 
    } 

    function startjsonSession() { 
     $items = ''; 

     print json_encode(array(
      "username" => "bob", 
      "items" => array(
       "item1" => "sandwich", 
       "item2" => "applejuice" 
      ) 
     )); 
    } 
?> 
+0

はい、私はすでにそのビット に見えたが、私はクリエイターコードを変更する必要が前に、その原因が起こっている何か他のものがあることができれば、私は思っていましたこの。 私は完全に理解していないので、彼のコードを変更することを本当に楽しみにしていません。 heredocの構文などで –

+0

{"a":1、 "b":2、 "c":3、 "d":4、 "e":5}のようにJSON形式を試してください。 – Sampson

+0

また、そのヘッダー()メソッドを今のところ取り出してコメントアウトしてください。 - コメントアウトしてください。 – Sampson

関連する問題