AJAX .load()返回NULL

时间:2013-12-28 01:02:59

标签: php jquery ajax session asynchronous

我正在用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。如果你还需要其他任何东西,请在评论中告诉我,我会尽快编辑。提前谢谢。

1 个答案:

答案 0 :(得分:1)

@Fernando - 我不知道你决定采用哪种方式,但如果你必须使用$ _SESSION,请包括:

session_start(); 

在您计划在任何内容呈现之前使用会话的每个文件的开头。另外,请注意为用户提供覆盖其值的方法,即。有一个帖子,所以一旦一个值被放入会话,有一种方法来改变它,它不会一直覆盖(新)值。我通常会在第一页的表格中清除我的会话。你可以做一个

unset($_SESSION['test-email']); 

...取消设定值。你也可以在这里使用foreach循环。

比较PHP中循环速度的一个很棒的网站也是http://www.phpbench.com/。 祝你好运!