web-dev-qa-db-ja.com

JSONをPHPからJavaScriptに返しますか?

JQuery AJAXを介して呼び出されるPHPスクリプトがあります。 PHPスクリプトがJSON形式のデータをjavascriptに返すようにします。 PHPスクリプトの擬似コードは次のとおりです。

$json = "{";
foreach($result as $addr)
{
    foreach($addr as $line)
    {
        $json .= $line . "\n";
    }
    $json .= "\n\n";
}
$json .= "}";

基本的に、2つのforループの結果を$ jsonに挿入する必要があります。

126
AquinasTub

PHPには、組み込みのJSONシリアル化機能があります。

json_encode

json_encode

お願いしますNot Invented Hereシンドロームに苦しむことができないなら、それを使ってください。

187
Kent Fredric

これまでの回答に欠けていたことがいくつかあります。

  1. PHPでヘッダーを設定します。

    header('Content-type: application/json');
    echo json_encode($array);
    
  2. json_encode()は、JavaScriptobjectの代わりにJavaScriptarrayを返すことができます。
    PHPスクリプトからJSONを返す
    これは、配列とオブジェクトが同じではないため、場合によっては知っておくことが重要です。

124
aesede

PHPのドキュメントには JSONセクション があります。ただし、PHP 5.2.0が必要です。

PHP 5.2.0以降、JSON拡張機能はデフォルトでバンドルされ、PHPにコンパイルされます。

そうでない場合は、ここに PECLライブラリ をインストールできます。

<?php
    $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

    echo json_encode($arr); // {"a":1,"b":2,"c":3,"d":4,"e":5}
?>
82
Ólafur Waage

通常、受信側でデータに何らかの構造を持たせることに関心があります。

json_encode($result)

これにより、配列キーも保持されます。

Json_encodeはutf8でエンコードされたデータでのみ機能することを忘れないでください。

13
Jukka Dahlbom

PHP用のシンプルなJSON を使用できます。 JSONを偽造するのに役立つヘッダーを送信します。

次のようになります。

<?php
// Include the json class
include('includes/json.php');

// Then create the PHP-Json Object to suits your needs

// Set a variable ; var name = {}
$Json = new json('var', 'name'); 
// Fire a callback ; callback({});
$Json = new json('callback', 'name'); 
// Just send a raw JSON ; {}
$Json = new json();

// Build data
$object = new stdClass();
$object->test = 'OK';
$arraytest = array('1','2','3');
$jsonOnly = '{"Hello" : "darling"}';

// Add some content
$Json->add('width', '565px');
$Json->add('You are logged IN');
$Json->add('An_Object', $object);
$Json->add("An_Array",$arraytest);
$Json->add("A_Json",$jsonOnly);

// Finally, send the JSON.

$Json->send();
?>
4
Alexis Paques

$ msg = "間違ったユーザー名を入力ORパスワード"; $ responso = json_encode($ msg);

echo "{\"status\" : \"400\", \"responce\" : \"603\", \"message\" : \"You Enter Wrong Username OR Password\", \"feed\":".str_replace("<p>","",$responso). "}";
0
Ajay Prajapati