$.post()没有实现跳转页面,到底是我前端的问题还是后端的问题?求教育

需求描述

  1. 点击form表单1中的提交按钮按钮bt1,通过ajax验证是否登录。

  2. ajax返回已经登录,提交form表单1中的数据到后台,后台进行处理,并返回渲染页面.

  3. ajax返回未登录,用$formData=$targetForm.serialize()存储form表单1的表单数据,然后弹出bootstrap modalmodal是一个登录窗口。

  4. 用户输入登录表单内容,这里我用了formValidation插件进行验证(因为实现国际化,这个插件在这方面做得很好)。

  5. formValidation验证通过后,提交登录form表单,通过ajax验证登录是否成功

  6. ajax返回登录成功,用$.post()发送form表单1的数据到后端(我在chromenetwork确定已经成功发送到正确的地址

一切都好像好顺利啊,然而,然而....

后台没有返回渲染页面啊!

后台没有返回渲染页面啊!

后台没有返回渲染页面啊!

(重要的话要说三遍)

省略掉一些不重要掉事情(可能也是最重要的细节):用/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security这个方法解决了 ajax跨域问题

阅读 8.2k
6 个回答

完全不明所以, 问的是 post 不能跳转页面, 而最后又说跨域问题?
首先 post 是不可能跳转页面的, 而且 post 也不能够实现跨域 ajax 的.
若想跳转页面可通过 window.location.href='http://example.com'
这种方式实现

第二步有问题,已经登陆之后如果需要返回渲染页面的话最好做js跳转。如果用ajax其实也可以,只不过需要前端把接受到的渲染之后的页面代码动态加载显示,比较复杂。

用ajax回调来确认是否已登陆再对应上传或登录弹框,这个过程存在登陆状态被篡改的风险

1)你先check下ajax给你返回了什么~~~
2)返回渲染页面 是指给你一个重定向的url还是一个HTML内容,需要你append到当前页面上?
3 )你从浏览器本身的角度来解决跨域问题,是用了nw.js/electron类似的框架吗?

正常的登陆逻辑来说,应该是验证成功后,后端重定向到登陆成功的页面,或者失败的页面,这个你应该问问后端的,看看他们是怎么处理的,另外你可以在$.post()中的success与error回调中获取一下返回给你的数据

推荐问题
宣传栏