2016-12-22 5 views
0

以下のjavascriptコードがあり、ajax呼び出しでasync:falseを設定しない限り、.doneハンドラに戻ることができません。私のajax呼び出しにasync:falseパラメータを含めないと、サービスが返ってもクライアント上で何も起こりません。成功したjQuery Ajax呼び出しを非同期で処理することはできません

$(function() { 
    $('#testButton').click(function() { 
     TestConnection(); 
    }); 
}); 

function TestConnection() { 
    $.ajax({ 
     url: 'http://localhost:52180/api/Accounts/Test', 
     type: 'POST', 
     async: false 
    }).done(function (data) { 
     alert('Success'); 
    }).fail(function (jqXHR, textStatus, err) { 
     alert("There was an error communicating with the Mojo-Store server."); 
    }); 
} 

私のHTMLは非常に簡単です:

は、ここに私のjavascriptのコードです。

public class AccountsController : ApiController 
    { 
     public AccountsController() 
     { 
     } 

     public bool Test() 
     { 
      return true; 
     } 
    } 

私は、サーバーと呼ばれていることがわかりますが、私は決してすることができます:私は簡単な方法を持っている私のウェブAPIプロジェクトで

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <script src="jquery-3.1.1.min.js"></script> 
    <script src="ServerCommunication.js"></script> 
</head> 
<body> 
       <button id="testButton"> 
</body> 
</html> 

:あなたが見ることができるように、私はjQueryの3.1.1を参照していますasync:falseパラメータがない限り、「Success」メッセージが表示されます。私はそれを削除したいと思います。この問題を解決するにはどうすればよいですか?

+0

注:偽、'。なぜ 'json'タグが質問に含まれていますか? _ "async:falseパラメータを持たない限り、" Success "メッセージを受け取ることはありません" _ async:false'が '$ .ajax()'オプションで設定されていないとどうなりますか? – guest271314

+0

質問が正しい構文になるように更新しました。 async:falseがajaxオプションから外されている場合、サーバーは呼び出されますが、javascriptは.doneコードを実行しません。 – YeahStu

+0

これは起こりません! '$。post or $ .get'で試してみてください。 – Developer

答えて

1

ajax呼び出しの成功とエラーを使用するには、コールバック関数を使用する必要があります。 Ajaxはデフォルトでは非同期で、ロード後に即座にreturn関数を呼び出すことになります。 async:falseを追加すると、Ajax呼び出し全体が非同期でなくなり、成功とエラーを呼び出すことができます。

asycnhronous作業を継続するために、このような何かを試してみてください: `非同期以下コンマ末尾

$(function() { 
    $('#testButton').click(function() { 
     TestConnection(Callback); 
    }); 
}); 

function TestConnection(callbackfn) { 
    $.ajax({ 
     url: 'http://localhost:52180/api/Accounts/Test', 
     type: 'POST', 
     success: function (data) { 
      callbackfn("Success"); 
     }, 
     error: function (jqXHR, textStatus, err) { 
      callbackfn("There was an error communicating with the Mojo-Store server."); 
    }); 
} 

function Callback(data) { 
    alert(data); 
} 
+0

うわー。それは働いたようだ。私はなぜその違いが重要だったのか分かりません。 – YeahStu

関連する問題