Javascript 在单击按钮时执行php脚本并通过ob_start返回值
我有一个按钮,里面有Javascript 在单击按钮时执行php脚本并通过ob_start返回值,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个按钮,里面有标签。单击时,它执行redirect.php脚本 login.php-包含 <a href="./redirect.php"><input type = "button" id = "loginButton2" class = "btn btn-primary" value = "Login | Twitter " style = "left:650px; margin-top: -32px; position:relative"/> </a&
标签。单击时,它执行redirect.php
脚本
login.php-包含
<a href="./redirect.php"><input type = "button" id = "loginButton2" class = "btn btn-primary" value = "Login | Twitter " style = "left:650px; margin-top: -32px; position:relative"/> </a>
如果你需要进一步解释,请告诉我
底线:
redirect.php
脚本redirect
脚本后,从redirect.php到index.php获取id
和name
<body>
<input type="button" value="Run somePHPfile.php" id = "b1" />
<script>
$('#b1').click(function () {
window.location.href = 'redirect.php';
$.get('index.php', function(data) { //If I put this out side click then it gives undefined value for name and id before redirect.php gets executed
// data.id is the id
var id= data.id;
var name = data.name;
alert(name);
});
});
</script>
</body>
$('#b1')。单击(函数(){
window.location.href='redirect.php';
$.get('index.php',function(data){//如果我将其放在外侧单击,则在执行redirect.php之前,它会为name和id提供未定义的值
//data.id是id
var id=data.id;
var name=data.name;
警报(名称);
});
});
抱歉说:
在按钮上单击redirect.php
scriptexecutedredirect.php
包括其他文件,最终到达index.php。php返回name
和id
这是否足以管理它:$.get('index.php',function(data){…}
<script>
$("#loginButton2").on('click',function(){
window.location.href="redirect.php";
});
</script>
而且
<a href="./redirect.php"><input type = "button" id = "loginButton2" class = "btn btn-primary" value = "Login | Twitter " style = "left:650px; margin-top: -32px; position:relative"/> </a>
到
要绑定到HTML按钮的单击事件,您需要使用JavaScript。因为您使用jQuery标记了问题,所以我假设它的用法。事件处理程序如下所示:
$('#loginButton2').click(function () {
window.location.href = 'redirect.php';
});
echo json_encode((object) array('id' => $id, 'name' => $name));
注意:这有效地模拟了锚定单击。如果您希望更接近HTTP重定向,您可能希望使用此选项:
window.location.replace('redirect.php');
至于id
和name
值,这个流首先是如何将用户返回到index.php
的?你的redirect.php
有一个重定向(虽然不是所有的代码路径都会导致这个重定向),所以它假设了非AJAX交互。(我认为XHR有时会遵循重定向,但不同浏览器的行为不同。)
如果重定向不是非常重要,并且您只想对redirect.php
进行AJAX调用,那么您可以通过一个简单的AJAX请求来实现:
$.get('redirect.php');
为了将这些值返回到页面,需要从redirect.php
发出这些值
$('#loginButton2').click(function () {
window.location.href = 'redirect.php';
});
echo json_encode((object) array('id' => $id, 'name' => $name));
然后在客户端代码中,您将在AJAX回调中获得这些值:
$.get('redirect.php', function(data) {
// data.id is the id
// data.name is the name
// use these values client-side however you need
});
现在还不清楚
ob\u start
与任何事情有什么关系,也不清楚您试图在index.php
上实现什么功能。您的代码已经将用户发送到redirect.php
了,不是吗?这不是预期的效果吗?请详细说明。@David:请看我添加的底线。@KarthickKumarGanesh:是的,ajax是解决方案n但我需要处理我无法理解的代码..在session中保存这两个值并重定向到index.php并获取session变量there@KarthickKumarGanesh:这是一种对服务器端状态的不必要的使用,在AJAX调用后对页面进行不必要的重新加载,你不这样认为吗?为什么不将值返回到AJAX caLH?是的,为什么不投票?请解释投票的原因。这可能对karthick和Me都有帮助。他需要在计算后将通过redirect.php
服务器端计算的值提供给index.php
。这是如何实现的?这只会将用户发送到redirect.php
并将值保存在服务器端。a
链接本身已经做到了这一点,而不需要JavaScript代码。当他只需要向服务器发出请求并在后台获得两个小值作为响应时,使用会话状态并不是真正必要的,额外的页面加载将降低整体性能和用户体验。@David he want允许在index.php中访问值,因此更好地使用seision变量处理值,我们还可以在按钮单击事件上执行此操作,而不是hyperlink@KarthickKumarGanesh:不,最好使用会话变量处理此问题。对服务器的请求可以返回响应,不需要在服务器端处理状态。会话状态的这种使用只是将值放在一个更全局的范围内,而这些值只需要从本地范围返回。当开发人员不知道如何管理变量时,全局范围不是变量的转储地。在HTTP环境中,当只需要从本地范围获取响应时,状态跟踪是不必要的服务器。@Programming\u crazy:我不清楚您在更新的代码中尝试了什么。如果您使用的是AJAX请求,您不应该再需要窗口.location.href=
行。此外,为什么您要向index.php
发出AJAX请求而不是重定向.php
?我以为这就是目标。耶s、 这就是目标。根据我最初的问题,你的答案是正确的。但后来我发现,在点击按钮时,redirect.php
脚本会执行。它依次调用index.php
,和name
,id
来自index.php
,请参见:&我选择了正确的答案。如果如果你愿意的话,你可以发布新的线程。@Programming\u Cray:抱歉,但我仍然不清楚新的问题是什么。听起来你想向另一个页面发出AJAX请求,该请求将调用一些服务器端代码,然后从该请求中得到一个结果,以便在当前页面上使用。你需要的文件e链接看起来很不一样。问题说的功能是在redirect.php
上出现在index.php
上,我根本看不到HTML或JavaScript。它非常有用
$.get('redirect.php', function(data) {
// data.id is the id
// data.name is the name
// use these values client-side however you need
});