使用Ajax(客户端)和CSHTML(服务器)将JSON对象从客户端发送到服务器

时间:2016-10-15 23:42:24

标签: jquery ajax razor

我想: 1.从客户端向服务器发送JSON对象 2.在服务器端解析对象。 3.对原始对象中的某些字段进行编码,并将其作为ne JSON对象发送到客户端。

这是我目前的代码:

客户端(JQuery-Ajax):

<script>
$(document).ready(function () {
    var obj = {};
    obj['marks']= ["hi"]; //array 
    $.getJSON("ServerTest.cshtml", JSON.stringify(obj) , function (result) {
        $.each(result, function (i, field) {
            if (i == "TextToSend") {
                $('#inner_body').append('<div class="abc">' + field + '</div>');
            }
        });
    });
});
</script>

服务器(CSHTML):

@{
    //Recieve and convert JSON Array
    var reader = new StreamReader(Request.InputStream);
    var jsonA = reader.ReadToEnd();
    var objArray= Json.Decode(jsonA);

    // Create a JSON Array
    var ServerResponse = new {
    TextToSend = new string[1],
    };

    ServerResponse.TextToSend[0] = objArray.marks[0];

    var json = Html.Raw(Json.Encode(ServerResponse));
    Response.Clear();
    Response.ContentType = "application/json; charset=utf-8";
    Response.Write(json);
    Response.End();
}

它不起作用。我假设服务器端代码没有正确读取JSON对象。

1 个答案:

答案 0 :(得分:1)

您正在执行HTTP GET,该GET旨在从服务器接收客户端上的数据。您应该进行POST,以便将数据发送到服务器。

在服务器端,您应该在控制器中编写一个操作以从客户端接收数据,并且应该在操作上放置HttpPost属性。

我知道你会问这是怎么做的,但是找到问题答案的最好方法不是让我在这里写一篇关于它的大文章,或者甚至向你展示代码,但是您可以使用Code First来创建一个使用Code First创建MVC应用程序的教程,并让脚手架为您在教程中创建的模型构建一个控制器,然后查看创建,编辑和删除操作。为你而创造。

客户端表单不会明显使用AJAX,因为它全部隐藏在HTML表单机制之外。就AJAX客户端代码而言,您可以查看$ post的jQuery文档,注意类型(4th)参数。

Razor用于MVC的V(视图)部分,而不是用于从客户端接收数据。