需求描述:
点击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跨域问题
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
完全不明所以, 问的是 post 不能跳转页面, 而最后又说跨域问题?
首先 post 是不可能跳转页面的, 而且 post 也不能够实现跨域 ajax 的.
若想跳转页面可通过
window.location.href='http://example.com'这种方式实现
第二步有问题,已经登陆之后如果需要返回渲染页面的话最好做js跳转。如果用ajax其实也可以,只不过需要前端把接受到的渲染之后的页面代码动态加载显示,比较复杂。
用ajax回调来确认是否已登陆再对应上传或登录弹框,这个过程存在登陆状态被篡改的风险
http://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit
1)你先check下ajax给你返回了什么~~~
2)返回渲染页面 是指给你一个重定向的url还是一个HTML内容,需要你append到当前页面上?
3 )你从浏览器本身的角度来解决跨域问题,是用了nw.js/electron类似的框架吗?
正常的登陆逻辑来说,应该是验证成功后,后端重定向到登陆成功的页面,或者失败的页面,这个你应该问问后端的,看看他们是怎么处理的,另外你可以在$.post()中的success与error回调中获取一下返回给你的数据