-1

データベースからライブ更新を取得できるように AJAX を使用する理由は、codeigniter を使用して自分の Web サイトに AJAX 呼び出しメソッドを実装しようとしています。

クリック ボタンが機能し、すべての JSON データが表示されますが、問題は、特定の配列を表示しようとすると認識されず、すべての文字を反復処理しているように見えることです。

また、別の奇妙なことは、アラートが呼び出されているときに、html タグと head タグが表示 されることです。たとえば、配列 ID などの特定の配列を出力できるようにしたいのです」

それを解決するために私がやったこと

  • 私はデータ型を警告し、それが文字列であることがわかりました

  • codeigniterではなく通常のPHPでajaxを動作させることができたので、データベースに問題はありません

  • jQuery.parseJSON も使用しようとしたので、強制的に json にすることができますが、スクリプトは実行されませんでした

  • 私はJSONlintを使用しましたが、明らかに有効なJSONです

どんな助けでもいただければ幸いです

コントローラ

public function insertJSON()
{
    $this->load->model("values");
    $queryresults = $this->values->getDb();

    $arrays = array($queryresults);

    echo json_encode($arrays);  
}

意見

<script type='text/javascript' language='javascript'>

  $('#getdata').click(function (data) {

      $.ajax({

          url: '<?php echo base_url().'index.php/welcome/insertJSON';?>',
          type: 'POST',
          cache: 'false',
          datatype: 'json'

      }).done(function (data) {

         alert(data);

      });

  });

</script>

json_encode

[
[
    {
        "id": "1",
        "postcode": "NW6",
        "imgurl": "hello.jpeg",
        "from_user": "henny",
        "created_at": "2013-03-18 23:03:00"
    },
    {
        "id": "2",
        "postcode": "NW2",
        "imgurl": "test.jpeg",
        "from_user": "belly",
        "created_at": "2013-03-15 23:03:00"
    }
]
]
4

3 に答える 3

1
$data[] = $arr; // <--- This $arr doesn't exist.

echo json_encode($data);

空白の配列をエンコードしています。また、配列をビューに適切に送信していません。実際には、配列をエコーするだけではいけません。

于 2013-03-01T23:24:52.990 に答える
1

@ベンは正しいです、どこ$arrから来ていますか?

public function insert()
{

    $this->load->model("values");

    $queryresults = $this->values->Query();

    $array = array();

    foreach($queryresults as $row)
    {
        $array[] =  $row->postcode;
    }

    echo json_encode($array);
    exit; 
//    Just echo it out, no need to load view!
//    $this->load->view('answer', $data);
}
于 2013-03-02T02:14:01.637 に答える
1

不足している変数 $arr は、ループの前に宣言された $array 変数である必要があります。これは次のようになります。

public function insert()
{

    $this->load->model("values");

    $queryresults = $this->values->Query();

    $array = array();

    foreach($queryresults as $row)
    {
        $array[] =  $row->postcode;
    }

    $data = array();

    $data[] = $array; // <--- The fix!

    echo json_encode($data);

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

実際のチェックを行う前に、コードを再確認することを検討してください。

于 2013-03-02T07:52:59.897 に答える