2016-11-16 18 views
1

Ajaxの機能は、私は別のものに1つのAJAX呼び出しを使用します。私は上記のコードを書いていますが、それは動作していません(入れ子になっている)、そしてショーに "Failed"を与えます。 ajax呼び出し関数のネストに問題があります。ネストAJAX呼び出し機能の

+0

'警告(errorThrown)は'あなたに何を与えるのでしょうか? –

+0

2つのajax呼び出しが同じサーバー上にある場合、2つのajax呼び出しを同時に実行する必要はありません。そして、エラー関数は有用な情報を返します:受け取った3つのパラメータの値は何ですか?また、開発者ツールで正確な応答が何であるかを見ることができます。 – jeroen

+0

私は2番目の呼び出しでいくつかのエラーがあると考えています。コンソールの完全なエラーを表示します。 –

答えて

0

構文は見栄えが良いですが、まず正しく動作していることを外側のajaxリクエストで確認し、data.ap_patientを正しく返します。その呼び出しの後、内部のajaxリクエスト。要求がアクションメソッドを修正するかどうかを検査する要素をチェックします。

+0

両方のajaxが別々に動作しています(静的パラメータでうまく動作します)。他のものと入れ子にすると問題が発生する – kashif

+0

最初に内部のajaxリクエストを書き込まないでください。それが動作しているかどうかを確認してください。それは仕事の場合は、内部の要求を書く??外側が加工されていない場合。あなたのコントローラーが存在しない可能性があります。 –

+0

1)内部ajax(URLの定数パラメータとは別)を使用している場合、期待値を返すように外部アヤックスコールを使用すると、期待される結果が得られます。外側のajaxコールで内側を入れ子にしても動作しない – kashif

3

あなたが参考のために...

コードがテストされていない以下のような約束を使用することができます。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise

var getAppointment = function() { 

    return new Promise(function(resolve, reject) { 

     $.ajax({ 
      url : "<?php echo site_url('ReceptionistController/ajax_edit_appointment')?>/" + id, 
      type: "GET", 
      dataType: "JSON", 
      success: function(data) 
      { 
       resolve(data); 
      }, 
      error: function (jqXHR, textStatus, errorThrown) 
      { 
       reject('Error get data from ajax'); 
      } 
     }); 

    }) 
} 

var editPatient = function(data) { 
    return new Promise(function(resolve, reject) { 

     $.ajax({ 
      url : "<?php echo site_url('DoctorController/ajax_edit_patient')?>/" +data.ap_patient, 
      type: "GET", 
      dataType: "JSON", 
      success: function(data) 
      { 
       resolve(data); 

      }, 
      error: function (jqXHR, textStatus, errorThrown) 
      { 
       reject('Failed'); 
      } 
     }); 
    } 
} 

getAppointment() 
    .then(function(data) { 
     return editPatient(data) 
    }) 
    .then(function(data) { 
     $('[name="pt_name"]').val(data.pt_name); 
    }) 
    .catch(function(error) { 
     console.log(error) 
    )); 
関連する問題