我试图在表单发布后从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。这两个脚本位于同一服务器上的不同文件夹中。我怎么能做到这一点?
提前致谢,
索菲亚
答案 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;感谢你的帮助。