【问题标题】:Ajax, not as post or get?Ajax,不作为post还是get?
【发布时间】:2016-07-03 04:55:08
【问题描述】:

我一直在使用 Ajax 主要用作 POST,以照顾想法,但现在只想在 DIV 中打开一个简单的登录页面(并且正在这样做)但现在问题来了,当我添加这是 PHP 代码:

<?php
if (isset($_POST))
{

}
else
{
    echo "
    <html>
        <head>
            <meta charset='utf-8'>
            <link rel='stylesheet' type='text/css' href='assets/css/main.css'>
        </head>
        <body>
            <div class='page-header'>
                <h1>Preencha os campos e carregue em enviar</h1>
            </div>
            <form>
                <div class='form-group'>
                    <label for='exampleInputEmail1'>Endereço Email</label>
                    <input type='email' class='form-control' id='exampleInputEmail1' placeholder='Email'>
                </div>
                <div class='form-group'>
                    <label for='exampleInputPassword1'>Palavra-Pass</label>
                    <input type='password' class='form-control' id='exampleInputPassword1' placeholder='Palavra-Pass'>
                </div>
                <button type='submit' class='btn btn-default'>Enviar</button>
            </form>
        </body>
    </html>";
}

这是 Ajax 代码:

$(function() {
    $('.navmenu a').bind('click', function(event) {
        event.preventDefault();
        var urlToGo = $(this).attr('href');
        if ($( window ).width() <= "992" && !$(this).hasClass('dropdown-toggle'))
        {
            $('.navmenu').offcanvas('hide');
        }
        $.ajax({
            url: urlToGo,
            dataType: 'html',
            success: function(result)
            {
                $(".container").html(result);
            }
        });
        $('html,body').animate({
            scrollTop: 0
        }, 700);
        console.log(urlToGo);
    });
});

当我点击要使用Ajax的链接时,它会在div容器上放置一个空白页面,我在这里做错了什么?如果我将 (isset($_POST)) 更改为 (!isset($_POST)) 它将正确显示内容,我不希望这是一个帖子。

这里的逻辑有什么问题?!

提前致谢

【问题讨论】:

  • 您是否尝试手动将 ajax 请求设置为 POST? method:"POST"
  • 建议:jquery ajax 默认类型为 'GET'。
  • @daremachine Ya 注意 $_SERVER['REQUEST_METHOD'] 告诉我要更准确地判断“在后台”正在做什么,我想要的是一个简单的页面加载到特定的 div,不需要 GET 或 POST 方法

标签: php ajax


【解决方案1】:

因为$_POST是PHP的全局变量,它存在于每个php线程中,所以isset($_POST)会返回true,在你的例子中$_POST的值是一个空数组。你可以试一试:

if (!empty($_POST)) {

} else {
    echo 'your html'
}

顺便说一下,我认为$_SERVER['REQUEST_METHOD']是一种更精确的方式来判断请求使用了什么样的http请求方式。

【讨论】:

  • 我确实使用了 $_SERVER['REQUEST_METHOD'] 来查看获取了什么方法,我在这里想要的不是 POST 或 GET 方法,只是想加载页面链接原样
  • 可以在html中设置div不可见,然后用javascript加载,不需要ajax和php通信,
  • 这可以工作,只需将该 div 加载到 div 容器中,或者我可以在 $_SERVER['REQUEST_METHOD'] 上使用您的建议,如果它是 GET(就像 ajax 的默认值一样)它会去其他。想要的是将表单和验证放在同一个文件上以进行登录,只是为了在需要时更容易找到,这就是为什么我将此文件加载到 DIV 中以解决这个问题。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 2011-08-04
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多