Так что я действительно потерялся на этом и был бы очень благодарен за помощь.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("");
}
}
Спасибо! Я знал, что должно быть что-то в этом роде. Так вот результат с этим кодом на месте: « Вы указали ранее„TestB“Вы можете обновить свой ответ ниже в любое время OK parsererror SyntaxError:.. JSON.parse: неожиданный символ» Я продолжая работать над этим на основе этих результатов. Еще раз спасибо! – user2305673
Не забывайте проголосовать и «отметьте как ответ», когда найдете разрешение. Я бы также посоветовал получить инструменты для работы с firebug или chrome, чтобы посмотреть, что происходит «по проводам» и/или Fiddler2. – granadaCoder
Уверенная вещь. Это помогает много – user2305673