2015-08-12 3 views
0

Я новичок в мире запросов ajax и asp.net. Я пытаюсь отправить запрос ajax на страницу aspx. Когда я отлаживаю серверную сторону, кажется, все в порядке, но ответ печатает сообщение об ошибке? Я попытался изменить Response.ContentType, но это не решило мою проблему. Какие-либо предложения?отправка запроса ajax ASP.NET

Вот мой Javascript код:

  function onclick(){ 
      $.ajax({ 
       url: "SandaAJAXRequests.aspx", 
       type: "post", 
       data: JSON.stringify({ "first": "getevent","second":"data" }), 
       dataType: 'json', 
       success: 
      function (response) 
      { 
       roundNumber = 1; 
       numberofblackwins = 0; 
       numberofredwins = 0; 
       ifBattleIsOver = false; 
       $("#round").text(roundNumber); 
       var result = response.split(","); 
       name1 = result[1]; 
       name2 = result[2]; 

       var r = confirm("Is " + name1 + " the black competitor?"); 
       if (r == true) { 
        $("#black_competitor_name").text(name1); 
        $("#red_competitor_name").text(name2); 
       } 
       else { 
        $("#black_competitor_name").text(name2); 
        $("#red_competitor_name").text(name1); 
       } 
      }, 
       error: function (xhr) { 
        alert("Problem sending data to the server"); 
       } 
      }); 
     } 

Вот моя сторона сервера:

protected void Page_Load(object sender, EventArgs e) 
    { 
     string jsonString = String.Empty; 
     Request.InputStream.Position = 0; 
     using (var inputStream = new StreamReader(Request.InputStream)) 
     { 
      jsonString = inputStream.ReadToEnd(); 
     } 
     string data = jsonString.Replace("\\", ""); 
     char[] seperators = { ':', ',', '"' }; 
     string[] a = data.Split(seperators); 
     string t = a[4]; 
     JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); 
     object serJsonDetails = javaScriptSerializer.Deserialize(jsonString, typeof(object)); 
     string requestType = serJsonDetails.ToString(); 
     switch (t) 
     { 
      case "getevent": 
       SandaEvent current = (SandaEvent)Application["CurrentEvent"]; 
       Response.ContentType = "text/plain"; 
       String response = current.id + "," + current.name1 + "," + current.name2; 
       Response.Write(response); 
       Response.End(); 
       break; 
    }} 
+0

Какое сообщение об ошибке? Это одно: 'alert (« Проблема отправки данных на сервер »);'? Посмотрите на консоль JS вашего браузера, вероятно, будут полезные сообщения об ошибках. Посмотрите вкладку Net в своем браузере, она покажет вам, какие данные вы отправляете и что отвечает сервер. Функция ошибки принимает три аргумента. Посмотрите на их значения, вместо того, чтобы предупреждать жестко закодированное и бесполезное сообщение об ошибке. – Quentin

ответ

0

У вас не хватает contentType в $.ajax({});

Content-type: application/json; charset=utf-8 

необходимо, когда вы делаете пост с помощью $ .ajax ({})

Content-type: application/json; charset=utf-8 обозначает содержание быть в формате JSON, закодированные в кодировке символов UTF-8.