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
  • 我已经有session_start()来管理twitter会话。因此,如果没有必要的话,不要想使用多个会话把事情搞得一团糟

    大卫回答后更新

    <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
    scriptexecuted
    redirect.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
    });