2つのjQueryajax呼び出しを順番に起動することができません

コード

POSTとGETを使用してアクセスするJSAPIを使用しています。eコマースプラットフォーム(Shopify)用ですが、この問題がプラットフォームに関連しているとは思いません。

コードでもコンソールでも、必要に応じて個別に実行する2つのPOSTリクエストを作成することができました。しかし、私は単にそれらを次々に発射させることはできません(私の場合、最初のものは2番目が始まる前に完了する必要があります)。

最初のリクエストは次のとおりです(これによりカートがクリアされ、データを送信する必要はなく、URLのみをPOSTする必要があります):

  function clearCart(){
    $.ajax({
      url: '/cart/clear.js',
      method: 'POST',
      success: function(){
        console.log("cleared");  
      },
     error: function(jqXHR, textStatus, errorThrown) {
          console.log('jqXHR:');
          console.log(jqXHR);
          console.log('textStatus:');
          console.log(textStatus);
          console.log('errorThrown:');
          console.log(errorThrown);
     }
    });
  }

2番目のリクエストは次のとおりです(これにより、特定のアイテムとそのアイテムの特定の数量がカートに追加され、チェックアウトにリダイレクトされます)。

function cartAdd(quantity, id){
    $.ajax({
      url: '/cart/add.js',
      method: 'POST',
      data: {
        quantity: quantity,
        id: id
      },
      success: function(data){
        console.log("added");
        window.location.href = '/checkout';
      },
      error: function(jqXHR, textStatus, errorThrown) {
          console.log('jqXHR:');
          console.log(jqXHR);
          console.log('textStatus:');
          console.log(textStatus);
          console.log('errorThrown:');
          console.log(errorThrown);
     }
    });
  }

それらをチェーンする方法は次のようになります(変数は正しく入力されます):

$.when(
    clearCart(),
    cartAdd(variantQuantity, variantID)
);

多くのテストを行った後、コードが正しく機能しているように見えることがあります(おそらく1/10の時間)。一貫してテストできないため、はっきりとは言えませんが、タイミングの問題であると思われます。それらの結果に。

私の唯一の本当の手がかりは、.done()を使用すると関数が個別に機能することですが、.success()を使用すると、次のように返されます。

SyntaxError: Unexpected token :
    at eval (<anonymous>)
    at jquery-1.10.2.min.js?1013630…:4
    at Function.globalEval (jquery-1.10.2.min.js?1013630…:4)
    at text script (jquery-1.10.2.min.js?1013630…:6)
    at On (jquery-1.10.2.min.js?1013630…:6)
    at k (jquery-1.10.2.min.js?1013630…:6)
    at XMLHttpRequest.r (jquery-1.10.2.min.js?1013630…:6)

助けはありますか?

更新「json」のデータ型を明示的に指定することで、構文エラーを実際に解決できます。とにかく、2つの関数は依然として不規則に動作し、正しい順序でしか機能しない場合があります。

ニサーグ

評価が正しければ、関数を同期的に実行して、最初の関数が実行されたときにのみ2番目の関数が呼び出されるようにすることができます。これがあなたがそれをすることができる方法です:

  function clearCart(){
    $.ajax({
      url: '/cart/clear.js',
      method: 'POST',
      async: false,
      success: function(){
        console.log("cleared");  
      },
     error: function(jqXHR, textStatus, errorThrown) {
          console.log('jqXHR:');
          console.log(jqXHR);
          console.log('textStatus:');
          console.log(textStatus);
          console.log('errorThrown:');
          console.log(errorThrown);
     }
    });
  }

async次の関数が呼び出される前にリクエストが完了するのを待つようにブラウザに指示するプロパティに注意してくださいその後何も実行されることを期待していないので、2番目の関数でこれを設定する必要はありません。

また、async=false非同期はユーザーエクスペリエンスを損なう傾向があるためではなく、最初の関数でコールバックを使用することをお勧めします

参照:http//api.jquery.com/jquery.ajax/

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

jqueryajaxを呼び出すことができません

分類Dev

jqueryajax呼び出しを機能させることができません

分類Dev

jQueryAJAX呼び出しに対してcomponentDidMountが起動しないことを反応させます

分類Dev

手動で呼び出さないと、関数の1つを呼び出すことができません

分類Dev

angle2 +で動的に追加/削除した後、ボタンを再度呼び出すことができません

分類Dev

jQueryajaxを使用してPageメソッドを呼び出すことができません

分類Dev

複数のAJAX呼び出しが終了するのを待つことができません

分類Dev

DBus の 2 番目のクラスのメソッドを呼び出すことができません

分類Dev

Javaは2番目のクラスを呼び出すことができません

分類Dev

urlfetch.Transport.RoundTripに移動し、GETを呼び出すことはできますが、POSTを呼び出すことはできませんか?

分類Dev

このエラーを修正する方法型に呼び出しシグネチャがない式を呼び出すことはできません

分類Dev

window.addEvent( 'load'、function())で2つのajaxメソッドを呼び出すことができません

分類Dev

C ++ / SFML:2つの再帰呼び出しを使用して凸形状を画面に印刷すると、最初の再帰呼び出しの形状のみが表示され、2番目の再帰呼び出しの形状は表示されません。

分類Dev

変数をAjax呼び出しに渡すことができません

分類Dev

再帰呼び出しを実装するメソッドを呼び出すことができません

分類Dev

Dropbox SDKの使用中にAppDelegateopenURL()を呼び出すことができません

分類Dev

これらの相互依存するVolley呼び出しをKotlinで順番に作成できますか/作成する必要がありますか?

分類Dev

分度器は(REST呼び出しによって引き起こされる)localStorageの変更を待つことができますか?

分類Dev

型に呼び出し署名がない式を呼び出すことはできません

分類Dev

setTargetInfo()が呼び出される前にgetBootClasspath()を呼び出すことはできません

分類Dev

メソッドを順番に呼び出すことはできますか?

分類Dev

2 番目の文字列からデータを呼び出すことはできません

分類Dev

2番目のAPI呼び出しのテストでデータベースを再作成する場合にのみ404が見つかりません

分類Dev

Dialog Fragmentは、AndroidでFragmentの呼び出しにイベントを戻すことができませんか?

分類Dev

Typescriptという名前の関数は異なる動作をします。エラー型に呼び出しシグネチャがない式を呼び出すことはできません

分類Dev

Javaは別のクラスからメソッドを呼び出すときにシンボルを見つけることができません

分類Dev

AttributeError:Module .__ init __()呼び出しの前にモジュールを割り当てることができません

分類Dev

2つの連続したテストを実行できません(必要ですが呼び出されません実際には、このモックとの相互作用はありませんでした)

分類Dev

Typescript:タイプに呼び出しシグネチャがない式を呼び出すことはできません。タイプ「番号」には互換性のある呼び出し署名がありません

Related 関連記事

  1. 1

    jqueryajaxを呼び出すことができません

  2. 2

    jqueryajax呼び出しを機能させることができません

  3. 3

    jQueryAJAX呼び出しに対してcomponentDidMountが起動しないことを反応させます

  4. 4

    手動で呼び出さないと、関数の1つを呼び出すことができません

  5. 5

    angle2 +で動的に追加/削除した後、ボタンを再度呼び出すことができません

  6. 6

    jQueryajaxを使用してPageメソッドを呼び出すことができません

  7. 7

    複数のAJAX呼び出しが終了するのを待つことができません

  8. 8

    DBus の 2 番目のクラスのメソッドを呼び出すことができません

  9. 9

    Javaは2番目のクラスを呼び出すことができません

  10. 10

    urlfetch.Transport.RoundTripに移動し、GETを呼び出すことはできますが、POSTを呼び出すことはできませんか?

  11. 11

    このエラーを修正する方法型に呼び出しシグネチャがない式を呼び出すことはできません

  12. 12

    window.addEvent( 'load'、function())で2つのajaxメソッドを呼び出すことができません

  13. 13

    C ++ / SFML:2つの再帰呼び出しを使用して凸形状を画面に印刷すると、最初の再帰呼び出しの形状のみが表示され、2番目の再帰呼び出しの形状は表示されません。

  14. 14

    変数をAjax呼び出しに渡すことができません

  15. 15

    再帰呼び出しを実装するメソッドを呼び出すことができません

  16. 16

    Dropbox SDKの使用中にAppDelegateopenURL()を呼び出すことができません

  17. 17

    これらの相互依存するVolley呼び出しをKotlinで順番に作成できますか/作成する必要がありますか?

  18. 18

    分度器は(REST呼び出しによって引き起こされる)localStorageの変更を待つことができますか?

  19. 19

    型に呼び出し署名がない式を呼び出すことはできません

  20. 20

    setTargetInfo()が呼び出される前にgetBootClasspath()を呼び出すことはできません

  21. 21

    メソッドを順番に呼び出すことはできますか?

  22. 22

    2 番目の文字列からデータを呼び出すことはできません

  23. 23

    2番目のAPI呼び出しのテストでデータベースを再作成する場合にのみ404が見つかりません

  24. 24

    Dialog Fragmentは、AndroidでFragmentの呼び出しにイベントを戻すことができませんか?

  25. 25

    Typescriptという名前の関数は異なる動作をします。エラー型に呼び出しシグネチャがない式を呼び出すことはできません

  26. 26

    Javaは別のクラスからメソッドを呼び出すときにシンボルを見つけることができません

  27. 27

    AttributeError:Module .__ init __()呼び出しの前にモジュールを割り当てることができません

  28. 28

    2つの連続したテストを実行できません(必要ですが呼び出されません実際には、このモックとの相互作用はありませんでした)

  29. 29

    Typescript:タイプに呼び出しシグネチャがない式を呼び出すことはできません。タイプ「番号」には互換性のある呼び出し署名がありません

ホットタグ

アーカイブ