首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向asp.net mvc发送JSON请求并获得部分视图结果,无法获得响应

向asp.net mvc发送JSON请求并获得部分视图结果,无法获得响应
EN

Stack Overflow用户
提问于 2014-08-20 08:59:18
回答 2查看 937关注 0票数 0

我正在开发一个测试应用程序,我试图向服务器发送问题Id和已完成测试的ans Id,以计算结果。

这是我的JQuery函数:

代码语言:javascript
运行
复制
$('#finishTest').on('click', function () {
    //Post Back results
    var $answers_li = $('ol.answers li');

    var jsonObj = { Results: []};

    for(var i = 0; i < $answers_li.length; i++)
    {
        var questionNo = $($answers_li[i]).data("question-id");

        var answer = $('input:checked', $answers_li[i]);
        jsonObj.Results[i] = { QId: questionNo, AnsId: answer.val() };
    }

    //NOW I have my Json Object I must call a function on server to calculate results and sends us the results page
    var $url = $(this).data('url');
    $.ajax({
            url: $url,
            contentType: 'application/json',
            dataType: 'json',
            type: 'POST',
            data: JSON.stringify(jsonObj),
            complete: function (data) {                    
                $('section#TestWrapper').html(data);
            },
            error: function (xhr, data) {
                alert('failed');
            }
    });
});

这是我在服务器端的功能: Asp.net MVC

代码语言:javascript
运行
复制
public ActionResult FinishTest(int Id, TestResultViewModel Answers)
    {

        TestResultViewModel model;

        if (Request.IsAjaxRequest())
        {
            //prepare Model;          
        }
        else
        {
            return HttpNotFound();
        }

        return PartialView("_TestResult", model);
    }

这是TestResultViewModel类定义:

代码语言:javascript
运行
复制
 public class TestResultViewModel
{
    public IList<QAModel> Results { get; set; }

    //Other Useful Properties
}

public class QAModel
{
    public int QId { get; set; }

    public int AnsId { get; set; }
}

下面是我从请求中得到的响应,但是jquery说:对检索到的数据进行解析。

代码语言:javascript
运行
复制
Response Headers: 
Cache-Control:private, s-maxage=0
Content-Encoding:gzip
Content-Length:799
Content-Type:text/html; charset=utf-8
Date:Wed, 20 Aug 2014 08:54:29 GMT
Server:Microsoft-IIS/8.0
Vary:Accept-Encoding
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:5.2
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?RTpcU2luYXZLdXJkdVxTaW5hdkt1cmR1XFNpbmF2a3VyZHUuV2ViVUlcU2luYXZrdXJkdS5XZWJVSS5Gcm9udEVuZFxUZXN0XEZpbmlzaFRlc3RcNA==?=

请求头:

代码语言:javascript
运行
复制
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,tr;q=0.6
Connection:keep-alive
Content-Length:323
Content-Type:application/json
Cookie:__RequestVerificationToken=Yv5fusfyb8EV5le8KOv6YPHIahIHkfvsF2mpnjU6oZ2Z1Ro_c60tvI6-JrDh7PJ6dTUGMavDCI-Y1BUm2rAUdyr4UnbjOKGwXOSqZqjNoag1; .AspNet.ApplicationCookie=5PJkE69hCjY8IsOP46Mm_jjR6yYvuQFVcsB3sQbC03xmnPqzPb-_gZNFm5tvKiCqSZzF6twHZX2aLe_NI6AAbDqZdBQL3t1gXZOtVvrQdY-v2r9Trvyys0AFjJH8zKhCQ7Uvz2fDONrLTpqWA9W9d1bssYSmhuZJkIY5SeaOXC8UO0wpWYYAo62zjzntl6DVWnWFaFR1aAXYmNTSjrqUyUFZ8VrVsG1mcDJAkSyIHpQ4mMAapS54VZQoo-x04xamLl93a_3wE9o9U5P3wmdknYzgYP-ay7I3VMRevGlG_vhpikH13ZenWLmeNdUJ4-1VJJOHy1lBYnmfurSpE1yNZTlsAO3q8XAROo6iKfnQm1KhmJmYzDWKo8R9Yi6KD0EpLA935y43MzIoN9vNhbvLuSKxTA222LbqmrmSKXwRTkReGnXR5HI2kDuZ9HNT0mbA1ltYhkueYBvHfyot_Gckcur2EaGbB_b-yszRPwnqJ7mZ3QstcWOtaKX0KFxvhD8Z-r2T9pD6wJzOLsQnnHB_2w
Host:localhost:2988
Origin:http://localhost:2988
Referer:http://localhost:2988/Test/Index/4
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36
X-Requested-With:XMLHttpRequest
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-20 09:02:14

您希望在ajax调用中使用json,但是响应是text/html。

从你的回复头。

代码语言:javascript
运行
复制
Content-Type:text/html; charset=utf-8

从ajax请求中删除dataType并尝试。

代码语言:javascript
运行
复制
$.ajax({
            url: $url,
            contentType: 'application/json',
            /*dataType: 'json',*/
            type: 'POST',
            data: JSON.stringify(jsonObj),
            complete: function (data) {                    
                $('section#TestWrapper').html(data);
            },
            error: function (xhr, data) {
                alert('failed');
            }
    });

来自jquery文档:

代码语言:javascript
运行
复制
The type of data that you're expecting back from the server. If none is specified, jQuery will try to infer it based on the MIME type of the response.
票数 1
EN

Stack Overflow用户

发布于 2014-08-20 09:42:22

您正在向服务器发送请求,并期待JSON的响应,但是您正在重新生成一个PartialView.You需要返回JSON格式的数据,而不是PartialView.Try (这里)

代码语言:javascript
运行
复制
public JsonResult FinishTest(int Id, TestResultViewModel Answers)
{

    TestResultViewModel model;

    if (Request.IsAjaxRequest())
    {
        //prepare Model;          
    }
    else
    {
        return HttpNotFound();
    }

    return Json(model);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25400644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档