需求描述:
点击form表单1
中的提交按钮按钮bt1
,通过ajax
验证是否登录。
ajax
返回已经登录
,提交form表单1
中的数据到后台,后台进行处理,并返回渲染页面
.
ajax
返回未登录
,用$formData=$targetForm.serialize()
存储form表单1
的表单数据,然后弹出bootstrap modal
,modal
是一个登录窗口。
用户输入登录表单内容
,这里我用了formValidation
插件进行验证(因为实现国际化,这个插件在这方面做得很好)。
formValidation
验证通过后,提交登录form表单
,通过ajax
验证登录是否成功
。
ajax
返回登录成功
,用$.post()
发送form表单1
的数据到后端(我在chrome
的network
中确定
已经成功
发送到正确的地址
)
一切都好像好顺利啊,然而,然而....
后台没有返回渲染页面啊!
后台没有返回渲染页面啊!
后台没有返回渲染页面啊!
(重要的话要说三遍)
省略掉一些不重要掉事情(可能也是最重要的细节):用/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security
这个方法解决了 ajax跨域问题
正常的登陆逻辑来说,应该是验证成功后,后端重定向到登陆成功的页面,或者失败的页面,这个你应该问问后端的,看看他们是怎么处理的,另外你可以在$.post()中的success与error回调中获取一下返回给你的数据
1)你先check下ajax给你返回了什么~~~
2)返回渲染页面 是指给你一个重定向的url还是一个HTML内容,需要你append到当前页面上?
3 )你从浏览器本身的角度来解决跨域问题,是用了nw.js/electron类似的框架吗?
http://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit
var $form = $('<form method="POST" action="' + urlAction + '">'); $.each(data, function (k, v) { $form.append('<input type="hidden" name="' + k + '" value="' + v + '">'); }); $form.submit();
用ajax回调来确认是否已登陆再对应上传或登录弹框,这个过程存在登陆状态被篡改的风险
第二步有问题,已经登陆之后如果需要返回渲染页面的话最好做js跳转。如果用ajax其实也可以,只不过需要前端把接受到的渲染之后的页面代码动态加载显示,比较复杂。
完全不明所以, 问的是 post 不能跳转页面, 而最后又说跨域问题?
首先 post 是不可能跳转页面的, 而且 post 也不能够实现跨域 ajax 的.
若想跳转页面可通过 window.location.href='http://example.com'
这种方式实现