Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将文件发布到asp.net web方法并返回json_Jquery_Asp.net_Json_Ajax_Webmethod - Fatal编程技术网

Jquery 将文件发布到asp.net web方法并返回json

Jquery 将文件发布到asp.net web方法并返回json,jquery,asp.net,json,ajax,webmethod,Jquery,Asp.net,Json,Ajax,Webmethod,我在尝试将文件发布到ASP.NETWebMethod并返回一些JSON时遇到问题。主要问题是,我不知道如何设置AJAX帖子的contentType,以便能够发送文件和接收回JSON。 如果contentType是“application/json;charset=utf-8”,那么我会收到这个错误 {"Message":"Invalid JSON primitive: ------WebKitFormBoundary1HaBThatcuXovAC2.","StackTrace":" at S

我在尝试将文件发布到ASP.NETWebMethod并返回一些JSON时遇到问题。主要问题是,我不知道如何设置AJAX帖子的contentType,以便能够发送文件和接收回JSON。 如果contentType是“application/json;charset=utf-8”,那么我会收到这个错误

{"Message":"Invalid JSON primitive: ------WebKitFormBoundary1HaBThatcuXovAC2.","StackTrace":"   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}
如果我将contentType设置为null,那么我将克服这个错误,请求将正确地发布文件,但我最终将整个页面作为响应接收回来

这是一个类似的情况,但他们并没有试图发布一个文件。

有什么办法让我绕过这件事吗?我不知道是否/如何更改页面后端的内容类型,使其仅返回json,或者是否有方法将该文件作为文章的一部分包含在conentType未设置为null的情况下。我已经为此挣扎了一段时间。任何帮助都将不胜感激。谢谢

jQuery

function UploadFile() {
$('.uploadButton').click(function () {
    var projectID = $(".projectID").val();
    var imageUploader = document.getElementById("imageFile");    
    var files = imageUploader.files;
    var file = imageUploader.files[0];
    name = file.name;
    size = file.size;
    type = file.type;
    if (window.FormData !== undefined) {
        var data = new FormData();
        for (var x = 0; x < files.length; x++) {
            data.append(files[x].name, files[x]);
        }
        data.append("description", $(".fileDescription").val());
        data.append("projectID", projectID);
    }
        $.ajax({
            //url: 'ajax.aspx/UploadImage?projectID=' + projectID + '&description=' + $(".description").val(),
            url: 'ajax.aspx/UploadImage',
            type: 'POST',
            data: data,
            cache: false,
            contentType: "application/json; charset=utf-8",
            //contentType: false,
            processData: false,
            dataType: 'json',
            success: completeHandler = function (msg) {
                console.log(msg);
                console.log(msg.d);
                var documentInfo = JSON.parse(msg.d);

            },
            error: errorHandler = function (e) {
                console.log(JSON.stringify(e));
                alert(e);
            }
        });
});
}
上传图像返回

"{\"documentID\":82,\"description\":\"asdf\",\"location\":\"Documents/hours_01-26-2017.csv\",\"projectID\":12,\"materialID\":null,\"material\":null,\"project\":null}"

你能发布ajax.aspx的代码吗,特别是WebMethod
UploadImage
?我已经上传了ajas.aspx代码
"{\"documentID\":82,\"description\":\"asdf\",\"location\":\"Documents/hours_01-26-2017.csv\",\"projectID\":12,\"materialID\":null,\"material\":null,\"project\":null}"