从外部PHP文件获取变量值

时间:2014-05-29 19:47:18

标签: javascript php html

我试图在表单发布后从PHP文件中获取结果:

index.php(在http://domain2.com/中)

    <form  id='loginForm' action='http://domain1.com/mail.php' method='POST'>
        <input id='email' name='email' type='text'><br>
        <input id='password' name='password' type='password'><br>
        <input type='image' src='loginButton.png' alt ='Submit Form'/>
    </form>

    <script type='text/javascript'>
        $(document).ready(function()
        {
            var error = "<?php echo json_encode($error); ?>";
            document.getElementById('email').value = error;
        });
    </script>

mail.php(在http://domain1.com/中)

    <?php
    header('Location: http://domain2.com/');  //executes index.php
    $email = $_POST['email'];  //received correctly
    $password = $_POST['password'];  //received correctly
    ...
    ...
    ...
    $error = 'invalid id or password';
    ?>

但是, $ error 变量保持返回null。这两个脚本位于同一服务器上的不同文件夹中。我怎么能做到这一点?

提前致谢,

索菲亚

2 个答案:

答案 0 :(得分:0)

很抱歉使用了答案部分,但由于方法已经改变,这就是我提出的,Ajax明智之处:

index.php(在http://domain2.com/中)

<form  id='loginForm' action='http://domain1.com/mail.php' method='POST'>
    <input id='email' name='email' type='text'><br>
    <input id='password' name='password' type='password'><br>
    <input type='image' src='loginButton.png' alt ='Submit Form'/>
</form>

<script type='text/javascript'>
        var frm = $('#loginForm');
        frm.submit(function (ev)
        {
            $.ajax(
            {
                    type: frm.attr('method'),
                    url: frm.attr('action'),
                    data: frm.serialize(),
                    success: function (data)
                    {
                        alert('submitted!');
                    }
            });
            ev.preventDefault();
        });                     
</script>

mail.php(在http://domain1.com/中)

<?php
        //header('Location: http://domain2.com/');
        $email = $_POST['email'];
        $password = $_POST['password'];
        ...
        ...
        echo 'invalid id or password';
?>

首先,它没有执行提醒(&#39;提交!&#39;),其次,响应会在哪里进行?此外,它是否需要一些特殊的Ajax插件,或标准的jQuery 1.10.1是否有效?

由于我只在出现错误时需要Ajax,如果没有错误, mail.php 是否有办法重定向到另一个页面?

再次感谢所有的帮助和建议。

索菲亚

答案 1 :(得分:0)

问题解决了!显然,这个问题围绕着跨域通信,这是另一个野兽。在所有的回复中,搞笑没有人抓住那个

无论如何,我设法通过使用CURLOPT_RETURNTRANSFER选项利用cURL代理来规避它。

谢谢ChrisWillard;感谢你的帮助。