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