本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:

How to manage a redirect request after a jQuery Ajax call

我有一个通过jquery验证客户端的表单。然后jquery将这些数据传递给一个PHP脚本,以进行服务器端验证。在PHP脚本的末尾,我尝试在成功后重定向,但不会发生重新定向。

jquery是否干扰重定向?如何让PHP脚本重定向。不想用jquery重定向,bc我将使用会话,并希望在重定向时保留会话数据。

代码如下:

jQuery:

$.ajax({

//this is the php file that processes the data and send mail

url:"includes/process/processAdminLogin.php",

//POST method is used

type:"POST",

//pass the data

data: dataString,

//indicate result is text

dataType:"text",

//Do not cache the page

cache: false,

//success

success: function (data) {

$('input').removeAttr('disabled'); //enable input fields again.

if(data =="fail"){

$("#statusMessage").html("");

$("#statusMessage").html("

Username and password do not match!

$('button').removeAttr('disabled');

document.forms[0].reset();

}

}

});

PHP

if($correctPass == 1){

ob_start();

session_start();

$_SESSION['usernameIdentity'] = $userName;

unset($userName, $userPass);

header("Location: ../../adminDashboard.html");

exit;

}else{

echo"fail";

}

PHP脚本到达重定向部分,然后挂断。我真的想保留jquery功能,以及php重定向。有更好的方法吗?

谢谢!

FINAL WORKING SOLUTION:

好的,在这个帖子和其他类似帖子的输入之后,这就是我的工作解决方案。这可能不是最有效或最漂亮的解决方案,但它是有效的,目前必须这样做。

JQuery

$.ajax({

//this is the php file that processes the data and send mail

url:"includes/process/processAdminLogin.php",

//GET method is used

type:"POST",

//pass the data

data: dataString,

//indicate result is text

dataType:"text",

//Do not cache the page

cache: false,

//success

success: function (data) {

$('input').removeAttr('disabled'); //enable input fields again.

if(data =="success"){

$('#statusMessage').html('

');

document.forms['userSubscription'].submit();

}else{alert("couldn t redirect");}

}

});

PHP

if($correctPass == 1){

echo"success";

}else{

echo"fail";

}

"接收重定向"页将必须验证再次提供的用户名和密码,因此验证将执行2x…这是非常低效的。如果有人能为我提供更好的解决方案-拜托!写一个样本也会有帮助。

谢谢!

由于Ajax发生在"幕后"(也就是说),重定向只会中断对JavaScript处理程序的响应。

您需要返回URL,并让您的回调将浏览器踢到一个新的位置。更新:

注意,由于必须将数据返回到前端,因此您需要添加一个status或类似的变量,以便根据调用是否"失败"来切换前端行为。更新2:

对于您的解决方案,我强烈建议您不要使用表单提交技术。正如您所说,它不高效,不漂亮,而且需要两倍的工作(验证用户2次)。

如果用户成功登录,为什么不使用PHP的内置会话处理来设置会话,然后在简单的javascript浏览器重定向之后简单地检查会话?

javascript重定向和window.href="http://mylocation"一样简单,如果您对PHP会话不太了解,可以使用我建立的这个类(请忽略它也在管理cookie,这是一个愚蠢的疏忽)。

我在考虑"状态"变量,您指的是实现一个类似于上面可能的内容重复链接("如何管理重定向…")中看到的解决方案,对吗?

是的,非常相似。我非常喜欢创建php stdClass对象,然后创建json_encode对象,在前端创建一个漂亮的javascript对象。

谢谢你的意见。我将按照您的建议来实现这个方法。

在哪里刷新输出缓冲区?尝试在header()重定向之后添加ob_end_flush();,看看是否有效。

编辑:也许将相对URI转换为绝对URI可以解决问题。这是直接从php.net中提取的一般示例。它基于一个相对的URI创建一个绝对的URI——你可以一直硬编码绝对的URI,而不是这样做。

/* Redirect to a different page in the current directory that was requested */

$host  = $_SERVER['HTTP_HOST'];

$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\');

$extra = 'mypage.php';

header("Location: http://$host$uri/$extra");

exit;

?>

不。不起作用。

从php.net直接引用:"注意:http/1.1需要绝对URI作为&187;位置的参数:包括方案、主机名和绝对路径,但有些客户机接受相对URI。您通常可以使用$u server['http_host']、$u server['php_self']和dirname()自己从相对的uri中生成绝对的uri。"

缓冲区在exit;上隐式刷新。

@杰克很有趣…不知道!

不,它不工作。我认为Rockerest是对的……我需要用jquery实现重定向……但是接下来的问题是如何保持会话数据的活动性……啊!

是的,我认为Rockerest也是对的。我自己尝试过,结果重定向页面的内容作为数据参数被发送回jquery的success函数。如果您在success函数中console.log()这个数据参数,您应该能够看到"admindashboard.html"页面上的内容。所以从技术上讲,它是重定向的(我猜),只是重定向页面的内容返回到javascript…如果你考虑的话,这是有道理的。希望它有帮助!

谢谢你的帮助!

尝试在Ajax调用中使用完整的URL。

而不是:

url:"includes/process/processAdminLogin.php",

尝试:

url:"http://www.mysite.com/includes/process/processAdminLogin.php",

试过这个。不起作用。

php 重定向 post,使用Jquery post时PHP不会重定向相关推荐

  1. linux %3e%3e 重定向,当我访问HTTPS时,网站保持重定向到HTTP,无明显原因

    我认为如果我可以让服务器通过HTTPS,但它只是拒绝并始终更改为HTTP,SSL就可以工作(或者至少我可以达到).该网站利用Joomla!但我很确定它不相关,因为: 我有另一个几乎相同的Joomla! ...

  2. Jquery Ajax时 error处理 之 parsererror

    Jquery Ajax时 error处理 之 parsererror     01 $.ajax({ 02         type: "POST", 03         con ...

  3. jQuery Ajax调用后如何管理重定向请求

    我使用$.post()使用Ajax调用servlet,然后使用生成的HTML片段替换用户当前页面中的div元素. 但是,如果会话超时,服务器将发送重定向指令以将用户发送到登录页面. 在这种情况下,jQ ...

  4. Updatepanel与Jquery合用时的问题解决

    Updatepanel与Jquery合用时的问题解决,可谓双剑合壁,但是当updatepanel局部刷新时,会有jquery效果丢失的问题.解决办法如下: 用 Sys.WebForms.PageReq ...

  5. jquery弹窗时禁止body滚动条滚动

    项目场景:jquery弹窗时禁止body滚动条滚动 解决方案:

  6. jquery过滤时采用比较_微软,诺基亚采用jQuery

    jquery过滤时采用比较 Over on the ASP.net weblogs, Microsoft has just announced that jQuery will ship with f ...

  7. java重定向url_Java根据新的URL 对网页进行重定向

    时间:2019-01-24 概述:重定向 Java根据新的URL 对网页进行重定向,当我们将网页的链接改变后,我们希望打开一个链接后能自动转到这个新的连接.本例通过编程实现了打开一个网页根据网页中提供 ...

  8. iis php重定向循环,iis和apache及PHP页面设置301重定向跳转方法

    301重定向有很多办法可以实现,如iis可以,apache,php,asp等等都可以快速的设置页面301重定向跳转了,下面我来给各位同学介绍介绍 本文将通过IIS.APACHE.ASP.PHP几种服务 ...

  9. php重定向在header头加参数,php的header重定向的域名参数后边可以加路由吗?

    结果为: 如果域名后边不添加admin参数的话是可以正常重定向的! 它会重定向到网站首页,我是想让它重定向到后台登入页面,所以才添加admin参数. 回复内容: 结果为: 如果域名后边不添加admin ...

最新文章

  1. github push报 Unable to access ‘https://github.com/xxxx/xxxx.git/‘: OpenSSL SSL_read: Connection was
  2. jolokia_使用WildFly 9和Jolokia监视DevOps样式
  3. mysql分布式如何实现原理_分布式通讯协议实现原理
  4. vue快速复制快捷键_⌨️ Vue项目给应用优雅的绑定快捷键
  5. java ha_java – Haproxy Bad Gateway 502
  6. 日期的前端验证 jquery
  7. android 自定义加载动画效果,Android 自定义View修炼-自定义加载进度动画LoadingImageView...
  8. extend implements多个对象_「每天三分钟跟我学Java」之Java面向对象的封装、继承、多态...
  9. python3运行python2_python2升级到python3
  10. 两个文件比较 linux,linux下比较2个文件
  11. java 对象深拷贝_java深入理解浅拷贝和深拷贝
  12. 补发 四人小组 组队简单说明
  13. [android]qq输入法手机版 v1.0 build0580,腾讯Android版手写输入法惊艳亮相 手写更畅快...
  14. C语言游戏开发——反弹球
  15. 马云在《赢在中国》对创业者的经典点评~
  16. [codechef] TOURISTS
  17. html标签属性大全(囊括CSS、CSS3、H5、XML等)
  18. 找工作需要有工作经验,而没工作就没工作经验。如何理解这种死循环?
  19. 闪聚支付-第1章-项目介绍
  20. python点滴 1

热门文章

  1. DBCC命令2:状态查询
  2. “阿一web标准学堂”第1课:web标准概述(附视频、课件、代码下载)
  3. 死锁与活锁的原因 与解决方法(附加“饿死”)
  4. IIS锁定是默认设置的 (overrideModeDefault=“Deny“)问题解决
  5. 【报告分享】中国都市圈发展报告:城镇化白皮书5.0.pdf(附下载链接)
  6. ubuntu apt-get 时遇到waiting for headers的破解办法
  7. 面试题50. 第一个只出现一次的字符
  8. python3模拟登录_Python3.4模拟登陆例子
  9. 只安装python能干什么_你都用 Python 来做什么?
  10. 哪些因素造成外贸网站没效果?