我是一个网站在用户拖动文件到一个div上工作,并将该文件上传到通过AJAX(XHR 2级运行西纳特拉的服务器)。我想从西纳特拉的反应,如JSON,然后POST与来自JSON信息的另一个途径。这个POST应该会导致另一个页面被渲染。请在JavaScript POST请求并装载返回的页面(西纳特拉)
我把它给了我在哪里可以上传文件,并取回响应。剩下的我怎么办?
P.S:我不希望使用GET,因为有些信息不应该在URL中。
在此先感谢。
我是一个网站在用户拖动文件到一个div上工作,并将该文件上传到通过AJAX(XHR 2级运行西纳特拉的服务器)。我想从西纳特拉的反应,如JSON,然后POST与来自JSON信息的另一个途径。这个POST应该会导致另一个页面被渲染。请在JavaScript POST请求并装载返回的页面(西纳特拉)
我把它给了我在哪里可以上传文件,并取回响应。剩下的我怎么办?
P.S:我不希望使用GET,因为有些信息不应该在URL中。
在此先感谢。
不正是你想要的方式。您将不得不在随后的POST调用中将JSON数据作为字符串获取。 的想法是动态创建表单元素,并用它来进行后续POST调用。
JavaScript代码
$.post("/test1/frm", {param1 : "param"}, function(d){
if(d.success) {
// subsequent POST call on success use commented code in case subsequent request is XHR
//$.post(d.url, d.response_data, function(dd){/*callback if any*/});
var frm = $("<form method='POST'>").attr("action", d.url).append($("<input name='data'>").attr("value", JSON.stringify(d.response_data)));
frm.submit();
}
});
控制器代码
post :frm do
logger.debug params.inspect
content_type :json
{:success => true, :url => "/test1/frm_post", :response_data => {:a => :b}}.to_json
end
post :frm_post do
logger.debug params.inspect
"success"
end
注你需要用钥匙更换控制器代码 - 值与实际使用情况。
谢谢,这个作品很棒! – V9801 2012-03-13 18:45:42
你在JSON中返回什么?要显示的HTML,要加载的内容的URL? – JohnColvin 2012-03-13 00:04:01
@JohnColvin我正在返回文件是否成功上传,以及文件的名称是否已被使用。 – V9801 2012-03-13 00:07:40
嗯,这很复杂。为什么POST需要参与?你可以发回URL重定向到JSON,并让JavaScript做重定向。 – JohnColvin 2012-03-13 00:20:23