解析从html到ajax的返回数据

时间:2015-06-15 15:44:23

标签: javascript php jquery html ajax

我对ajax的返回值有一些问题。

这是ajax代码:

$(document).ready(function() {
    var request;
    $("#flog").submit(function(event) {
        if(request)
            request.abort();
        event.preventDefault();
        var form = $(this);
        var serializedData = form.serialize();
        var btnname = $('#log').attr('name');
        var btnval = $('#log').val();
        var btn = '&'+btnname+'='+btnval;
        serializedData += btn;      

        request = $.ajax({
            type: form.attr('method'),
            url: form.attr('action'),
            data: serializedData,
        });

        request.done(function(data, status, jdXHR) {
            alert(data);
        });

        request.fail(function(jdXHR, status, error) {

        });
    });
});

它从表单中获取数据并将其发送到另一个页面。

这是第二页:

<?php include 'head.php'; ?>
    <?php
    if($_POST['login']) {

    session_regenerate_id(true);
    $con = mysqli_connect("localhost", "Alessandro", "ciao", "freetime")
        or die('Could not connect: ' . mysqli_error($con));

    $query = 'SELECT * FROM users WHERE username="' . $_POST['user'] . '"';
    $result = mysqli_query($con, $query) or die('Query failed: ' . mysqli_error($con));
    if(mysqli_num_rows($result) == 0) {
        mysqli_close($con);
        session_unset();
        session_destroy();
        $res = false;
        return $res;
    }

    $query = 'SELECT password FROM users WHERE username="' . $_POST['user'] . '"';
    $result = mysqli_query($con, $query) or die('Query failed: ' . mysqli_error($con));
    $line = mysqli_fetch_array($result, MYSQL_ASSOC);
    if(md5($_POST['password']) != $line['password']) {
        mysqli_close($con);
        session_unset();
        session_destroy();
        return false;
    }
?>
<?php include 'foot.php'; ?>

并且在.done中返回的数据都是html页面。 我怎样才能只检索数据,比如$ res?我试过json_encode()但没有结果。 如果在第二页中我删除了包含'head.php'和包含'foot.php'的行,它就可以了。但是我需要secon页面也是html。 Somenone可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

不要使用AJAX的Data属性。

替换

request.done(function(data, status, jdXHR) {
        alert(data);
    });

request.done(function(data, status, jdXHR) {
        alert(jdXHR.responseText);
    });

答案 1 :(得分:0)

你可以用更简单的方式做到这一点。 在PHP中存储尝试登录变量的结果,例如$ result = 0;首先 如果登录有效,则将其更改为1,并通过在PHP文件末尾执行回显将其返回到ajax。如果您需要返回其他值,例如名称,可以使用分隔符(例如||)将其添加到变量中例如。

在javascript中收集您的返回并转到data = data.split(&#39; ||&#39;); if(data [0] == 0){alert(&#34; Welcome back&#34; + data [1]);} else {alert(&#34; error login ...&#34;)}

以前的使用是正确的,您需要转义PHP脚本中收集的用户。 希望这会有所帮助。