2012-02-01 24 views
2

イムを失敗しました:PHP ZendのフレームワークJSONデコードは、Ajaxを使用して

$.ajax({ 
     url: 'testURL', 
     type: 'POST', 
     dataType: 'json', 
     data: {userId: userIds, imageUrl: imageUrl, message: message }, 
     success: callBack 
    }); 

とサーバ側:私は何

Decoding failed 

$data = $this->_request->getPost(); 
     $response = Zend_Json::decode($data, true); 

しかし、イムは、サーバー側でエラーを取得します間違っている?

$.ajax({ 
url: STValentines.baseUrl+'/mensaje/sendmessage', 
type: 'POST', 
dataType: 'json', 
data: {userId: '111', imageUrl: 'imageurl', message: 'message' }, 
success: callBack 
}); 

同じエラー

EDIT 2:アイブ氏はそれを試みた

:任意の助け

EDITため

おかげでここ

は再びjsのコードをPHPでコードとその結果:(

$.ajax({ 
     url: 'testURL', 
     type: 'POST', 
     dataType: 'json', 
     data: "{'userId': 'test1234', 'imageUrl': 'testimageUrl', 'message': 'testmessage' }", 
     success: callBack 
    }); 


public function sendmessageAction() { 
    $data = $this->_request->getPost(); 
    print_r($data); 
    $response = $data; 
$this->_helper->json($response); 

結果:一見

Array 
(
) 
+0

は、適切な形式のJSON文字列ですか? –

+0

'$ data'は実際にJSON文字列を含んでいますか? PHPのネイティブ 'json_decode()'は動作しますか? JSON文字列にマルチバイト/非ASCII文字がありますか? – Carpetsmoker

+0

私の編集を見てください – gruber

答えて

1

は、それはあなたが正しくない可能性があります送信しているデータのように見えます。私が正しく覚えていれば、オブジェクトのプロパティを引用する必要があります。これを試して。

$.ajax({ 
    url: 'testURL', 
    type: 'POST', 
    dataType: 'json', 
    data: {"userId": userIds, "imageUrl": imageUrl, "message": message }, 
    success: callBack 
}); 
+0

did work:/同じエラー – gruber

+0

PHPは何を受信して​​いますか? 'print_r($ data);を投稿して結果を表示できますか? – Crashspeeder

+0

私の編集を見てください – gruber

3

クラッシュスピードは、少なくとも自分のデータ形式で正しいはずです。 PHPマニュアルから

- json_decode - json_decodeを使用してJSON文字列をデコード

//correct json format 
Example #1 json_decode() examples 


<?php 
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 

var_dump(json_decode($json)); 
var_dump(json_decode($json, true)); 

?> 

例#3一般的なミス()

<?php 

// the following strings are valid JavaScript but not valid JSON 

// the name and value must be enclosed in double quotes 
// single quotes are not valid 
$bad_json = "{ 'bar': 'baz' }"; 
json_decode($bad_json); // null 

// the name must be enclosed in double quotes 
$bad_json = '{ bar: "baz" }'; 
json_decode($bad_json); // null 

// trailing commas are not allowed 
$bad_json = '{ bar: "baz", }'; 
json_decode($bad_json); // null 

?> 

また、あなたが...

json_last_errorを使用することができますが - 最後のエラーは、エラーを取得する

を発生して返します。

+1

私は問題は$ data = $ this - > _ request-> getPost()だと思います。文字列ではない配列を返し、Zend_Json :: decode($ data、true);を返します。エラー:( – gruber

+0

@gruber真をスローしますが、$ this_request->でgetPost( 'データ')はJSON文字列を持つべきか、あなたは$これを試みることができる - 。生のPOSTデータを返す> _要求 - > getRawBody()、 – RockyFord

0

私は次のことをお勧め:

  1. AJAX要求からdataType: 'json'を削除します。
  2. アクションでは、return $this->_helper->json($responseArray);を使用してください。レイアウトや何かを変更する必要はありません。
+1

。新しいZendフレームワークの開発者は同じ問題に直面しています:) – palAlaa

関連する問題