1

私の場合、var ダンプが次のようControllerな配列があります。$data

array
  'urls' =>
    array
      0 =>
        array
          'link_id' => string '1' (length=1)
          'link_name' => string 'http://www.nytimes.com' (length=22)
  'words' =>
    array
      0 =>
        array
          'keyword_id' => string '1' (length=1)
          'keyword' => string 'republican' (length=10)

配列構造:

$ データにはurlsandwordsのみがありますが、複数の値を持つことができます。両方のカーディナリティは同じではありません。

次に、それを次のようにエンコードし、echo json_encode($data);これdisplayDataを ajax に送信します。displayDataPOST データは必要ありません。で行われる ajax リクエストは次のViewとおりです。

$.ajax({
    url:"http://localhost/codeigniter/SiteController3/displayData",
    success: function(response){
        alert(response);
        $("#user_data").html(response);
    },
    dataType:"json"
})
  • 連想配列responseを実行して取得できるように、「ビュー」でにアクセスしたいと思います。json_decode($response, true)
  • 配列をループして、このデータを表形式でレンダリングするコードのチャンクがあります。このコードの前に、連想配列を取得したいと思います。
  • $.getJSON代わりに使用してみまし$.ajaxたが、解決策はありません。機能も試し$.eachましたが、アラートで取得するだけundefinedです。JSON.stringifyアラートでJSONを表示しましたが、PHPコードに送信できませんでした。

編集:

@fragmentedrealityの答え

コンテンツ タイプの不一致は、回答を使用して解決されます。しかし、表形式でデータを表示するための PHP コードのチャンクがあるの AJAX の成功時に受信した応答にアクセスするにはどうすればよいですか?html bodyView

解決:

以下の私の答えを確認してください。

4

2 に答える 2

1

最後に私はJSONアプローチをやめました。displayDataのメソッドに次の行を追加しましたController

$this->load->view('data_processing', $data);

これは、表示したいHTMLテーブルを生成data_processing.phpする新しいものです。Viewこれの応答は、次のAJAXリクエストによってView私のオリジナルにロードされます。View

$.ajax
({
    url: "http://localhost/codeigniter/SiteController3/displayData",
}).done(function(data)
    {
         console.log(data);
         $('#user_data').html(data); 
    }
于 2013-02-21T16:58:48.437 に答える
1

追加

header('content-type: application/json');

echoアプリケーションの応答に正しい MIME タイプを設定するために、コントローラー ( の前) に追加します。

于 2013-02-21T11:38:28.087 に答える