2

ajax jquery関数を使用してPOSTリクエストを送信し、一部のデータを非同期でウィンドウに返そうとしています。これが私がこれまでに持っているものです。動作していないようです。

ビューで:

$.ajax({
          url: '/dashboard/presskits/media/get_video_link/',
          type: 'POST',
          dataType: 'json',
          data: { encoded_link : encoded_link },
          cache: false,
          success: function(output_string){
            // $('#edit_video_info').append(output_string);
            alert(output_string.url_data);
          } // End of success function of ajax form
          }); // End of ajax call
}); 

コントローラ内:

 public function get_video_link()
{
    $temp_url = $this->input->post('encoded_link');
    $output_string = json_encode(array('url_data' => $temp_url));
            return $output_string;
    } 
4

3 に答える 3

1

Print または echo は JSON を返さないため、success も含める必要があります。

print json_encode(array('Status' =>'Success', 'url_data' => $temp_url));
于 2012-11-05T16:56:47.113 に答える
0

echoまたはで戻り値を変更するだけprintです。

于 2012-11-05T16:58:51.623 に答える
0

まず、URL ヘルパーを有効にしていますか? URL フィールドが正しくないと思います。config 内で URL ヘルパーを有効にし、ベース URL を次のようにエコーします。

url: "<?php echo base_url(); ?>dashboard/presskits/media/get_video_link/"

また、chrome または firefox 開発者ツールを使用して、リクエストからの HTTP 応答ヘッダーを確認することをお勧めします。Chrome では、右クリック -> ネットワークを実行し、ajax リクエストを開始します。

次に、コントローラーで応答を返すのではなく、エコーする必要があります。低レベルでは、関数が値を返すとき、その値はレジスタ (メモリ) に格納され、すべてスタック内で行われます。つまり、I/O 操作ではありません。Echo は json テキストをブラウザーに直接出力します (これは ajax 呼び出しが予期しているものです)。

于 2012-11-06T01:06:17.037 に答える