WCF/jQuery/HttpContext-为什么会提示我保存文件?

WCF/jQuery/HttpContext-为什么会提示我保存文件?,jquery,wcf,Jquery,Wcf,我试图在上传文件后返回JSON结构。该文件保存在web服务器中很好。问题是,当我尝试使用结构“UploadJobStatus”返回数据时,IE会提示我保存文件:“您想从本地主机打开或保存UploadFile554b0687吗?” 该文件首先保存在web服务器中,然后我会得到带有奇怪文件名的提示问题。 如果保存文件,我会看到内容是返回的JSON数据: [{“Error”:“上传文件成功”。,“Successful”:true}] 但是,如果我将接口更改为返回justvoid,则不会得到提示。我需要

我试图在上传文件后返回JSON结构。该文件保存在web服务器中很好。问题是,当我尝试使用结构“UploadJobStatus”返回数据时,IE会提示我保存文件:“您想从本地主机打开或保存UploadFile554b0687吗?” 该文件首先保存在web服务器中,然后我会得到带有奇怪文件名的提示问题。 如果保存文件,我会看到内容是返回的JSON数据:

[{“Error”:“上传文件成功”。,“Successful”:true}]

但是,如果我将接口更改为返回justvoid,则不会得到提示。我需要返回该结构,以便在jQuery代码中循环返回的数据

接口:

[System.Web.Services.WebMethod(EnableSession = true)]
[OperationContract(Name = "RunJob_UploadFile")]
[WebInvoke(UriTemplate = "/RunJob/UploadFile", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST")]
List<RunJob.UploadJobStatus> UploadFile();
jQuery:

function UploadFile() {
    if ($("#FileToUpload").val() != "") {
        $.ajaxFileUpload
            (
                {
                    url: "svc/RunJob.svc/RunJob/UploadFile",
                    secureuri: false,
                    fileElementId: "FileToUpload",
                    data:
                    {

                    },
                    success: function (jqXHR, textStatus) {
                        if (textStatus == "success") {
                            alert("File was uploaded.");
                        }
                        else {
                            alert("Upload file failed!");
                        }
                    },
                    error: function () {
                        alert("Error!");
                    }
                }
            )
    }
}
有什么想法吗?
谢谢

浏览器无法理解返回的数据,因此会提示您保存该数据,因为它不知道如何处理该数据


这个问题中的信息应该会有所帮助

我想这是通过ajax调用从网页上传的?jqueryajax代码可能很有用。此外,如果您使用chrome的网络选项卡来查看请求/响应,那么从请求返回的实际内容类型是什么(如果您查看响应头中的内容),以及响应正文中的数据是否正确?或者,如果您从表单发布页面,您可能会遇到此问题,而Chrome不会出现此问题。返回的数据(JSON结构)出现在HTTP 200响应中。Klors:抱歉,只是您的链接。成功了。非常感谢。我不知道我在哪里或如何将你的答案标记为好的和最终的。很高兴它有帮助,我将把它作为一个答案,以便你可以标记它。
public struct UploadFileStatus
{
  public bool Successful;
  public string Error;

  public UploadFileStatus(bool successful, string error)
  {
      this.Successful = successful;
      this.Error = error;
  }
}
function UploadFile() {
    if ($("#FileToUpload").val() != "") {
        $.ajaxFileUpload
            (
                {
                    url: "svc/RunJob.svc/RunJob/UploadFile",
                    secureuri: false,
                    fileElementId: "FileToUpload",
                    data:
                    {

                    },
                    success: function (jqXHR, textStatus) {
                        if (textStatus == "success") {
                            alert("File was uploaded.");
                        }
                        else {
                            alert("Upload file failed!");
                        }
                    },
                    error: function () {
                        alert("Error!");
                    }
                }
            )
    }
}