我正在用PHP构建一个网站,我试图在某些情况下实现异步行为,在这种情况下,将HTML表单加载到叠加层中并使其可见。这按预期工作,但我现在正在测试考虑现有数据的所有内容。
所以我基本上创建了一个variables.php
文件,它将值设置为$_SESSION
全局并且正在那里工作。一切都在index.php
上按预期工作,但是一旦我点击叠加层,我就注意到值没有通过来填充添加的表单。
我已经谷歌谷歌几个小时无济于事。我在echo var_dump($_SESSION);
文件中添加了index.php
,值就在那里。但是在覆盖层上它返回NULL。我甚至在{。1}}正好在index.php的中间,这给了我值。所以我缺少一些东西,以便将值应用于include_once("loginForm.php")
元素。
以下是一些代码:
variables.php
.load()
报头的login.php
//added values to the $_SESSION global for testing purposes
$_SESSION['email'] = 'john@john.com';
$_SESSION['password'] = 'johnny';
$_SESSION['name'] = 'John';
$_SESSION['surname'] = 'Smith';
$_SESSION['country'] = 'UK';
$_SESSION['phoneOption'] = 'Mobile';
$_SESSION['phone'] = '987654321';
onClickEvents.js
//this form accepts an email to check ifExists() and decide what's next
//the input #preLoginEmail assumes the value correctly
<form action="header-login.php" name="preLoginForm" id="preLoginForm" method="post">
<div id="login-part2">
<table id="preLoginTable">
<tr>
<td colspan="2">
<input type="text" id="preLoginEmail" title="Email" name="test-email" tabindex="1" size="10" maxlength="60" placeholder="Email" value="'. $email .'" />
</td>
</tr>
<tr>
<td><a title="forgotten password" href="header-login.php" id="preLoginForgot">forgot password?</a></td>
<td><input type="submit" class="btn1" name="preLoginRegisterButton" id="preLoginRegisterButton" tabindex="1" value="Login / Register" /></td>
</tr>
</table>
</div>
echo var_dump($_SESSION);//works
</form>
loginForm.php
//this call retrieves the HTML correctly although the variables dont get assigned to the input's value
$( "#preLoginForm" ).submit(function( event ) {
event.preventDefault();
var $form = $( this ),
term = $form.find( "input[name='test-email']" ).val(),
url = $form.attr( "action" );
verifiedEmail = validateEmail(term);
if(verifiedEmail){
// Put the results in a div
$('#olContainer').load("../inc/loginForm.php");
overlayOn();
}
else {
$('.session-stat').css({ "background-color": "#A60000" });
}
});
我有点无法弄清楚出了什么问题,本周我才开始学习AJAX。如果你还需要其他任何东西,请在评论中告诉我,我会尽快编辑。提前谢谢。
答案 0 :(得分:1)
@Fernando - 我不知道你决定采用哪种方式,但如果你必须使用$ _SESSION,请包括:
session_start();
在您计划在任何内容呈现之前使用会话的每个文件的开头。另外,请注意为用户提供覆盖其值的方法,即。有一个帖子,所以一旦一个值被放入会话,有一种方法来改变它,它不会一直覆盖(新)值。我通常会在第一页的表格中清除我的会话。你可以做一个
unset($_SESSION['test-email']);
...取消设定值。你也可以在这里使用foreach循环。
比较PHP中循环速度的一个很棒的网站也是http://www.phpbench.com/。 祝你好运!