AJAX发布方法在一个区域有效,而在另一区域则无效

时间:2018-10-30 17:02:42

标签: javascript php jquery ajax

我有一个AJAX发布方法,可以在“梯形图”页面上的两个地方工作,而在另一个“匹配”页面上却没有。此方法设置发布php拾取的“玩家ID”并设置会话变量

$("form .singles-player-name").click(function (evt) {
    evt.preventDefault();

    var viewPlayer = $(this).val();
    console.log(viewPlayer);

    $.ajax({
        url: '',
        type: 'POST',
        data: {
            viewPlayerID: viewPlayer
        }
    }).done(function (data) {
        console.log("Success");
        //console.log(data);
        window.location.href = "Player";
    });
});

工作页面表格:

<form><button type='submit' id='playerInfo' class='singles-player-name' name='viewPlayer' value='",$sglsPlayerID,"'>", $curSGLSRankLName, ", ", $curSGLSRankFName, "</button></form>

设置会话变量

if (!empty($_POST['viewPlayerID'])){
$viewPlayer = isset($_POST['viewPlayerID']) ? $_POST['viewPlayerID'] : 'No data found';

$viewPlayerSql = "SELECT * FROM `PLAYERS` WHERE `ID` LIKE '".$viewPlayer."'";
$viewPlayerQuery = @$conn->query($viewPlayerSql);
$viewPlayerRow=mysqli_fetch_assoc($viewPlayerQuery);

$_SESSION['playerID'] = $viewPlayerRow["ID"];
echo "", $_SESSION['playerID'],"";}

第二个工作版本与第一个存在于同一页面上,但适用于双打玩家:

$("form .doubles-player-name").click(function (evt) {
    evt.preventDefault();

    var viewPlayer = $(this).val();
    console.log(viewPlayer);

    $.ajax({
        url: '',
        type: 'POST',
        data: {
            viewPlayerID: viewPlayer
        }
    }).done(function (data) {
        console.log("Success");
        //console.log(data);
        window.location.href = "Player";
    });
});

该ajax方法的形式:

<form><button type='submit' id='playerInfo' class='doubles-player-name' name='viewPlayer' value='",$dblsPlayerID,"'>", $curDBLSRankLName, ", ", $curDBLSRankFName, "</button></form>

然后,ajax方法将重定向到播放器页面,并在该页面上拉出该播放器的信息(例如https://urlexample.com/Player)。从这一点来看,这部分有效!但是,我还有另一个页面,“匹配”页面,我希望它在其中做同样的事情,并设置该会话变量,然后重定向到播放器页面,因此在下面有此方法。但是由于某种原因,这个起作用:

$("form .singlesMatch-player1-name").click(function (evt) {
    evt.preventDefault();

    var viewPlayer = $(this).val();
    console.log(viewPlayer);

    $.ajax({
        url: '',
        type: 'POST',
        data: {
            viewPlayerID: viewPlayer
        }
    }).done(function (data) {
        console.log("Success");
        console.log(data);
        window.location.href = "Player";
    });
});

不起作用的形式:

<form><button type='submit' id='playerInfo' class='singlesMatch-player1-name' name='viewPlayer' value='",$sglsPlayer1ID,"'>", $P1LN, ", ", $P1FN, "</button></form>

由于某种原因,第二种方法要做的就是将其发布到URL(例如https://urlexample.com/WeeklyMatchUps?viewPlayer=1)中,而不是设置会话变量并重定向到播放器页面(例如https://urlexample.com/Player)。两者之间唯一的不同就是按钮的类名。

2 个答案:

答案 0 :(得分:0)

$ sglsPlayer1ID应该是$ sglsPlayerID。

另外,尝试将成功和错误条件添加到AJAX条件中,而不是仅使用完成操作符。这样,您就可以在发生故障时转储有用的错误代码,以便将来更好地解决此类问题。

答案 1 :(得分:0)

我在页面上调用了一个函数,该函数被注释掉,导致在将jQuery添加到页面底部的脚本中之前出错。从该功能中删除该功能即可解决此问题。

向@ line88求助!