2017-07-06 13 views
0

私はJavascriptと組み合わせてAsp.netを初めて使いました。私のコントローラからデータを取得するために 'url'私が作成したフレームワークデータベース)。データの取得が成功しないため、エラーアラートが表示され続けます。エラーを取得する/ api/Questions/404(見つかりません)

私のコントローラ(コントローラ/ API/QuestionsController)

namespace Pasapalabra.Controllers.Api 
{ 
    public class QuestionsController : ApiController 
    { 
     private PasapalabraContext db = new PasapalabraContext(); 

     // GET: api/Questions 
     public IList<Question> GetQuestions() 
     { 
      var questions = db.Questions.ToList(); 
      return questions; 
     } 

     // GET: api/Questions/5 
     [ResponseType(typeof(Question))] 
     public IHttpActionResult GetQuestionById(int id) 
     { 
      Question question = db.Questions.Find(id); 
      if (question == null) 
      { 
       return NotFound(); 
      } 

      return Ok(question); 
     } 
    } 
} 

マイビュー(ビュー/質問/ Index.cshtml)

 function keepPlaying() { 
      var questions = getQuestions(); 
      if (questions.length !== 0) { 
       getRandomQuestion('A'); 
      } else { 
       gameOver(); 
      } 
     } 

     function getQuestions() { 
      $.ajax({ 
       url: '/api/Questions/', 
       type: 'GET', 
       dataType: 'json', 
       success: function (data) { 
        return data; 
       }, 
       error: function (error) { 
        alert("Error"); 
       } 
      }); 
     } 
+0

いくつかのルーティングがありませんか? –

+0

Routeconfig.csはQuestionsControllerとも呼ばれる別のコントローラにリダイレクトされますが、これはビューのためのもので、apiではなくApiフォルダ内にないので問題はないと思います:routes.MapRoute( name: "Default"、 URL: "{コントローラ}/{アクション}/{ID}"、 デフォルト:new {コントローラ= "質問"、アクション= "インデックス"、id = UrlParameter.Optional} ); –

答えて

-1

次のようにあなたのAJAX呼び出しを変更してください。

function getQuestions(callback) { 
     $.ajax({ 
      url: '/Questions/GetQuestions', 
      type: 'GET', 
      dataType: 'json', 
      success: function (data) { 
       callback(data); 
      }, 
      error: function (error) { 
       alert("Error"); 
      } 
     }); 
    } 

問題の第2の部分は、そのような非同期呼び出しから戻ることはできません。

function keepPlaying() { 
     getQuestions(function(questions){ 
     if (questions.length !== 0) { 
      getRandomQuestion('A'); 
     } else { 
      gameOver(); 
     } 
     }); 
    } 
+0

ありがとう、まだ動作しません、今すぐ言います:リソースを読み込めませんでした:サーバーは404の状態で応答しました(見つかりません) –

+0

ブラウザで動作していますか?私はhttp:// localhost/api/Questions/GetQuestionsのようなものを意味します。 また、ルートプレフィックスがないので、APIなしで試してください。私は再び答えを変更しました – Volem

+0

getQuestionsを非API質問コントローラに移動しました。今私はまだエラー警告が表示されますが、ブラウザのコンソールに404が見つからないとは言えません。今度は単純にこう言っています: "Uncaught TypeError:未定義のプロパティ 'length'を読み取ることができません。だから私はまだ私のdbデータを取得することはできません。男はこれが本当にどれくらい難しいでしょうか?あなたのお手伝いをささげてください –

関連する問題