解析从html到ajax的返回数据

I have some problem with the returned value of ajax.

this is the ajax code:

$(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) {

        });
    });
});

it takes data from a form and send it to another page.

this is the second page:

<?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'; ?>

and in .done the returned data is all the html page. How can I retrieve only a data, like $res? I tried with json_encode() but with no results. If in the second page I delete the lines include 'head.php' and include 'foot.php' it works. But I need that the secon page is html, too. Somenone can help me?

dongmeiba6151
dongmeiba6151 即使我在返回的数据中使用echo$res,也有所有的html页面
接近 5 年之前 回复
duanshan1511
duanshan1511 你很容易受到sql注入攻击。因为你正在进行ajax调用,所以你不能从php->js“返回”。你必须在php中生成OUTPUT,它可以被发送回JS代码。例如回声'失败'或其他什么。
接近 5 年之前 回复

2个回答

Dont use the Data attribute from AJAX.

Replace

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

with

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

展开翻译

译文



不要使用AJAX的Data属性。</ p>

替换</ p>

  request.done(function(data,status,jdXHR){
alert(data);
});
</ code> </ pre>

with < /p>
nn

request.done(function(data,status,jdXHR) {
alert(jdXHR.responseText);
});
</ code> </ pre>

</ div>

du12197
du12197 是一样的。 我有所有的html文本,而我只想要变量$ res
接近 5 年之前 回复

You could do it in a much simpler way. In PHP store the result of the attempted login into a variable, for instance $result =0; to start with If the login is valid change it to 1 and return it to ajax by doing an echo at the end of your PHP file. If you need other value returned such as the name you could add it to the variable with a separator such as || for instance.

in javascript collect your return and go data = data.split('||'); if (data[0] == 0){alert("Welcome back " + data[1]);}else{alert("wrong login...")}

Previous use is correct, you need to escape the user collected in your PHP script. Hope this helps.

展开翻译

译文



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

在javascript中收集你的返回并转到data = data.split('||');
if(data [0] == 0){alert(“欢迎回来 “+ data [1]);} else {alert(”error login ...“)} </ p>

以前的使用是正确的,您需要转义PHP脚本中收集的用户。

希望这有帮助。</ p>
</ div>

dongzhao5970
dongzhao5970 谢谢。 我希望有一个html页面,以便在禁用javascript时显示它
接近 5 年之前 回复
duanchui1279
duanchui1279 PHP页面中没有HTML标记,因此页面上唯一的内容就是变量的值。 HTML标记用于浏览器,但没有浏览器进入您的PHP文件。
接近 5 年之前 回复
du3979
du3979 谢谢! :)但我怎么能只检索变量$ result,而不返回所有的html页面
接近 5 年之前 回复
dongpin3794
dongpin3794 是的,你可以存储你想要的任何东西,然后分开你想要的东西。 我发现这对于相对少量的数据返回是理想的,因为在这里就是你的情况。
接近 5 年之前 回复
dpmp9359
dpmp9359 这样在数据中只有变量$ result?
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问