2011-12-31 10 views
3

私はこれを発見しました:http://code.google.com/p/jquery-json、json_encode PHP関数をエミュレートするプラグインです。jsonオブジェクトとしてエンコードし、ajax経由で送信してください

は、だから私はこれを試してみました:?

var datasend = {}; 
    datasend['name'] = $(".chat_username").val(); 
    datasend['message'] = $(".chat_text").val(); 
    encoded_send = $.toJSON(datasend); 
    $.ajax({ 
     type: "POST", 
     url: "/apps/chat_write", 
     data: {send_data: encoded_send }, 
     success: function(response){ 
     if(response!="OK"){ 
      alert("Παρουσιάστηκε πρόβλημα.Κάντε ανανέωση την σελίδα ή προσπαθήστε ξανά αργότερα."); 
     }else{ 
      $(".chat_text").val(""); 
      $(".chat_count").val("0/100"); 
     } 
     } 
    }); 

最初の問題は、私はこの

$.ajax({ 
     type: "POST", 
     url: "/apps/chat_write", 
     data: "name="+escape($(".chat_username").val())+"&message="+escape($(".chat_text").val()), 
     success: function(response){ 
     if(response!="OK"){ 
      alert("Παρουσιάστηκε πρόβλημα.Κάντε ανανέωση την σελίδα ή προσπαθήστε ξανά αργότερα."); 
     }else{ 
      $(".chat_text").val(""); 
      $(".chat_count").val("0/100"); 
     } 
     } 
    }); 
    return false; 
}); 

を持っていると私はギリシャ文字に問題がある.. ので、私はこの場合はJSONオブジェクト を使用するdecidiedコードは正しいですPHPからJSONオブジェクトを解析するにはどうしたらいいですか?エラーがどこにあるのは間違っていますか?

おかげ

+0

['json_decode](http://php.net/manual/en/function.json-decode.php)PHP関数を使用してください。しかし、あなたは変数 'encoded_send'を宣言し、それを使用していないので、あなたのコードは意味を持ちません。次に、 'jsonObjects'を定義せずに' JSON.stringify(jsonObjects) 'を使っています。 –

+0

'json_decode($ _ POST [ 'SEND_DATA']);' FYI –

+0

oupssss ... 'JSON.stringify(encoded_send)' –

答えて

1

(私は...あなたの関数に進む前に)
あなたはJSONの目的を誤解しているようです。データをサーバーに送信するときに、データをJSON文字列に置き換える必要はありません。もっと簡単な方法は、dataを介してパラメータを追加し、$_POSTによってそれらを取得することです。

例:

​​

単純なPHP例:

<?php 
    header('Content-Type: application/json'); 
    $example = array("what" => "This"); 
    echo json_encode($example); //Echos: {"what":"This"} 
?> 

JSONは、サーバRESPONSに使用されるべきです。 PHPオブジェクトはjson_encodeを使用してシリアル化できます。出力を送信する前にheader('Content-Type: application/json');を使用していることを確認してください。

(あなたがまだ送信する前にJSONエンコードデータにしたい場合)
は、JSON文字列をデシリアライズするjson_decode PHPの関数を使用します。

あなたの現在のコードは固定する必要があります。

var datasend = {}; 
datasend['name'] = $(".chat_username").val(); 
datasend['message'] = $(".chat_text").val(); 
var encoded_send = $.toJSON(datasend); 
$.ajax({ 
    type: "POST", 
    url: "/apps/chat_write", 
    data: {send_data: encoded_send }, 
    dataType: "json", /* Can be removed if the RESPONSE is not JSON*/ 
    success: function(response){ 
    if(response!="OK"){ 
     alert("Παρουσιάστηκε πρόβλημα.Κάντε ανανέωση την σελίδα ή προσπαθήστε ξανά αργότερα."); 
    }else{ 
     $(".chat_text").val(""); 
     $(".chat_count").val("0/100"); 
    } 
    } 
}); 
+0

Btw、私はMIMEタイプをオーバーライドしなければならないとは思わないが、jQueryはデータを 'x-www-form-urlencoded':' send_data = {json_here} 'としてエンコードします。 –

+0

は今、私はこのエラーを取る: '
致命的なエラーCで配列としてのタイプはstdClassのオブジェクトを使用することはできません:\ xamppの\ htdocsに\行に\チャットの\ chat_write.phpをアプリ
' –

+0

これを試してみてください私の推奨するJavaScriptコードと一緒にPHPコード:http://pastebin.com/NgdDxmgN –

関連する問題