2012-03-04 30 views
1

これであまりにも長く遊んでいます!Ajaxの取得リクエストからデータを取得できません

私はcodeigniterを使用しています。

私はAjax getリクエストからデータを取得しようとしています。単に、MySQLデータベースをチェックして、そこにデータがあるかどうかをチェックしたいのです。単純な真偽は返品には問題ありません。

ここに私の要求が続き、PHPが続きます。 PHPは正しい結果を$ dataに返しますが、Ajaxリクエストに戻ると、アラート(データ)が呼び出され、何も表示されません。

私が間違っていることは何ですか?

おかげで

function get_appointment_data(request_date){ 

    $.ajax({ 
    url: 'http://localhost/doctor_today/booking/retrieve_cal_data', 
    type: 'GET', 
    data: request_date, 
    success: function(data){ 
       alert(data); 
    } 
    }); 
} 




function retrieve_cal_data() { 

    $this->load->model('Booking_model'); 

    $date = $this->input->get('date');  
    $data = $this->Booking_model->get_calendar_data($date); 

    return $data==null; 
} 
+0

まず、サーバーからブラウザに送信されるものを見てみましょう。デバッグコンソールを試してみてください。 – SergeS

+0

実際には、これを追加して、最終的にMySQL DBから文字列を返す必要があります。 。 –

+2

私はエコーやプリントなど何も表示されません。 codeigniterはコントローラの戻り値を出力しますか?たぶんあなたは 'return $ data == null? "false": "true";または 'echo $ data == null? "false": "true"; '。 – Basti

答えて

2

私はCodeIgniterのに慣れていないですが、あなたは、出力関数の結果をしなければなりません。 Instal of 'return'では、結果をajaxリクエストに返すために 'echo'を使用する必要があります。

+0

返事をありがとう。 –

+0

うーん。返信の代わりにエコーを使用すると、画面に出力されます(正しいデータ!)。私は質問があると思う、どうすればajaxリクエストがある.jsファイルにそのデータを戻すのですか?私はajaxを完全に間違った方法で使用している可能性がありますが、私はそれがサーバーからJavaScriptにデータを返すために使用されていたと思った? –

+0

みんな、ありがとう。私はあなたの助けを借りてそれを仕上げました。 echo($ data)は必要な形式でした!再度、感謝します –

0

結果をエコーする必要があります。そうしないと、ajaxは結果を受け取らず、成功ハンドラは実行されません。ここでは、私はこのケースで使用するつもりです。私は、その仕事のためのより簡単な.post関数を1つの重要な違いを使って使用しています - 最後に 'json'を指定すると、jsonオブジェクトを私の.postの結果(Googleでこれを検索できます)。次の鍵は、PHPのjson_encode関数を使用してjson形式で取得したい結果をエンコードし、その結果をエコーすることです。私たちは、通常の「return」ステートメントで結果を返す必要はありません。だから... ...

スクリプト:

 var url = 'http://example.com/ajax_function'; 
     var data = null; 

     $.post(url, data, function(data) { 

      if(data.ok) 
       alert('Everything is fine!'); 
      else 
       alert('Ops!'); 

     }, 'json'); 

サーバ側:

function retrieve_cal_data() { 

    $this->load->model('Booking_model'); 

    $date = $this->input->get('date');  
    $data = $this->Booking_model->get_calendar_data($date); 

    echo json_encode(array('OK' => $data==null)); 
    } 

あなたが直接PHP関数を呼び出した場合、それは後で

{ "OK": "true" } 

のような出力に何かすべきonはjavascript配列に翻訳されます

data[OK] = true; 

あなたが望むように使用できます。

乾杯、 スタン。

P.S.私はコードをテストしていませんが、かなりうまくいくはずです。

関連する問題