2013-06-07 4 views
0

Так что я действительно потерялся на этом и был бы очень благодарен за помощь.JQuery.ajax/asp.net: если вызываемая страница возвращает параметры, которые она работает, но если она выполняет запрос linq, тогда она не работает

Вот что я пытаюсь сделать: пользователь отправляет форму. второй бит javascript ниже отправляет данные формы на страницу, которая передает информацию в базу данных без обновления страницы. Это прекрасно работает, а затем вызывает UpdateResponseText(). UpdateResponseText вызывает страницу, которая возвращает информацию (код C# ниже) и выписывает некоторую строку. Это значение должно появиться в поле alert().

Возникла проблема: страница Article/GetResponse работает нормально. Я могу ввести URL-адрес вручную и получить ожидаемый результат. Тем не менее, «успешная» часть UpdateResponseText() никогда не срабатывает, поэтому, я полагаю, у javascript есть проблема. Что странно, но если я НЕ использую SQL и просто Response.Write параметры, то он работает.

Вот Javscript:

  function UpdateResponseText() { 
       alert("Function Called"); 
       $.ajax({ 
        type: "GET", 
        dataType: "json", 
        url: "@string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"))/Article/GetResponse", 
       data: "[email protected]&[email protected]", 
        success: function (json) { 
         alert("Success"); 
        alert(json); 
       } 
      }) 
     } 
      $('#ArticleFeedbackForm').submit(function() { 
       var formdata = $(this).serialize(); 
       alert(formdata); 
       $.ajax({ 
        type: "POST", 
        url: "#", 
        data: formdata, 
        success: function() { 
         UpdateResponseText(); 
        } 
       }); 
       return false; 
      }); 

C#:

public void GetResponse(string UserID, string ArticleID) 
    { 

     HelpSiteEntities1 db = new HelpSiteEntities1(); 
     var ARID = Convert.ToInt32(ArticleID); 
     FeedbackObject TheFeedbackObject = new FeedbackObject(); 
     var QuestionQuery = (from Q in db.Questions 
          join U in db.QuestionMaps 
          on Q.ID equals U.QuestionID 
          where U.TopicID == ARID 
          select new { TheQuestionText = Q.Question1, TheQuestionID = Q.ID }).ToList(); 
     var QuestionID = (QuestionQuery.Select(o => o.TheQuestionID).ToList()[0]); 
     //Response.Write(UserID + ARID.ToString() + QuestionID); 
     var AnswerOptionsQuery = from A in db.QuestionAnswers 
           where (A.MapsToID == QuestionID) 
           select new { TheAnswerText = A.AnswerText, TheAnswerIDs = A.ID, IsStatic = A.StaticResp }; 
     var AnswerOptions = AnswerOptionsQuery.ToList(); 
     var previousResponse = (from x in db.QuestionRespMaps 
           where x.UserID == UserID && x.QuestionID == 1 && x.TopicID == ARID 
           select x).FirstOrDefault(); 
     if (previousResponse != null) 
     { 

      Response.Write("You have indicated previously \"" + (AnswerOptionsQuery.Where(o => o.TheAnswerIDs == previousResponse.AnswerID).ToList())[0].TheAnswerText + "\". You may update your response below at any time."); 
     } 
     else 
     { 
      Response.Write(""); 
     } 

    } 

ответ

1

Добавить функцию ошибки?

  error: function (jqXHR, textStatus, errorThrown) { 
       HandleJQueryError(jqXHR, textStatus, errorThrown); 
      } 
     , 
      success: function (jsonResponse) { 
       UpdateResponseText(jsonResponse); 
      } 









    function HandleJQueryError(jqXHR, textStatus, errorThrown) { 

     try { 

      var msg = ""; 

      if (null != jqXHR) { 

       if (null != jqXHR.responseText) { 
        msg += "\n\r " + jqXHR.responseText; 
       } 
       if (null != jqXHR.responseXML) { 
        msg += "\n\r " + jqXHR.responseXML; 
       } 

       try { 
        if (null != jqXHR.statusText) { 
         msg += "\n\r " + jqXHR.statusText; 
        } 
       } 
       catch (err) { 
        msg += "\n\r " + err; 
       } 

      } 

      if (null != textStatus) { 
       msg += "\n\r " + textStatus; 
      } 

      if (null != errorThrown) { 
       msg += "\n\r " + errorThrown; 
      } 

      alert(msg); 



     } 
     catch (err) { 
      //alert("HandleJQueryError Error"); 
      if (null != err) { 
       alert(err); 


      } 
     } 



    } 
+0

Спасибо! Я знал, что должно быть что-то в этом роде. Так вот результат с этим кодом на месте: « Вы указали ранее„TestB“Вы можете обновить свой ответ ниже в любое время OK parsererror SyntaxError:.. JSON.parse: неожиданный символ» Я продолжая работать над этим на основе этих результатов. Еще раз спасибо! – user2305673

+0

Не забывайте проголосовать и «отметьте как ответ», когда найдете разрешение. Я бы также посоветовал получить инструменты для работы с firebug или chrome, чтобы посмотреть, что происходит «по проводам» и/или Fiddler2. – granadaCoder

+0

Уверенная вещь. Это помогает много – user2305673

Смежные вопросы