我在 Rails 中有一个模型创建表单,我还通过 ajax 返回 JSON。
到目前为止我的代码看起来像:
$('#new_stem').ajaxForm({ //#new_stem is my form
dataType: 'json',
success: formSuccess
});
function formSuccess(stemObj) {
//does stuff with stemObj
}
我有一个带有文件上传器的多部分表单(但我不确定这是否相关)。
当我提交表单时,它工作正常(我的模型已正确创建并呈现为 json),但不是由 formSuccess 函数处理 json,而是提示下载“stems.json”(我的茎创建的路径)操作)在 Firefox 中。
什么会导致这种情况发生,以及如何解决?不确定这是否是问题的一部分,但我的表单中没有提交按钮,我有一个带有调用 $('#new_stem).submit() 的点击处理程序的链接
多谢你们!
编辑:Firebug 告诉我标头包含以下内容:
Etag "b53e5247e7719cf6b1840e2c6e68781c"
Connection Keep-Alive
Content-Type application/json; charset=utf-8
Date Mon, 03 May 2010 02:19:31 GMT
Server WEBrick/1.3.1 (Ruby/1.8.7/2010-01-10)
X-Runtime 241570
Content-Length 265
Cache-Control private, max-age=0, must-revalidate
加上一个cookie头
为了防止浏览器触发 .json 文件的下载,请将 Content-type 标头设置为“text/html”。
PHP:
header("Content-type: text/html");
ASP.NET MVC:
return Json(obj, "text/html");
在 javascript 中,您需要解析文本结果,如下所示:
$(".addform").ajaxSubmit({
url: "file.php",
type: "POST",
dataType: "text",
iframe: true,
success: function (text) {
var data = $.parseJSON(text);
},
error: function (xmlRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
工作完美。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)