MVC4 AJAX发布JSON

时间:2014-03-13 09:14:21

标签: c# ajax json image post

这是我的功能,我只发布json

function test() {
            var imgFile = document.getElementById('image');
            //            var imgData = JSON.stringify(getBase64Image(imgElem));
            //var imgData = Convert.FormBase64String(imgElem);

            $.ajax({
                type: 'POST',
                dataType: 'json',
                url: "http://localhost:59102/Contacts/AddContact",
                data: "json=" + "{\"token\":\"8mVm/nS1OfpU+nlQLbJjqXJ7kJI=VyLGI2GEKkGgtDt0babrAw==\"}",

                success: function (returnPayload) {
                    console && console.log("request succeeded");
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    console && console.log("request failed");
                },

                processData: false,
                async: false
            });

我不知道如何添加到我的数据,图像,我需要发布json和图像

这是我的控制器

[HttpPost]
        [AllowAnonymous]
        public JsonResult AddContact(string json, HttpPostedFileBase file)
        {}

2 个答案:

答案 0 :(得分:0)

你不能通过AJAX(按设计)上传文件,除非你使用的是一个利用其他'技术'的插件,如flash或iframes - 这是一个安全措施,因为JavaScript读取你机器上的本地文件不会是最好的主意

此处有 选项:http://jquery.malsup.com/form/

...否则我建议查找其他许多替代品之一!

答案 1 :(得分:0)

将数据获取到基数64后,您的json应该是一个对象 从你的控制器你的json应该是这样的

{"json":"something here that is a string","file":"some file"}

同样在客户端,您应该有一个n对象,您可以在其上调用JSON.stringify()

var ob = {json:imageDataAsBase64,file:fileDataAsBinary}

虽然我没有看到发送两者的原因。 如果您需要的只是转移图像,您只需将图像作为base64并将其作为json发布