繁体   English   中英

PHP / JS Ajax _POST数组未发布

[英]PHP/JS Ajax _POST Array not Posting

我的ajax代码中发生了一些奇怪的事情。 我在缩小范围方面有些困难。

JavaScript的:

//Discard Displaying Cards
$(".discard").click(function(){
    var gameId = 20;
    var cardArray = [];
    $( ".card" ).each(function() {
        var cardId = $(this).attr('id');
        cardArray.push(cardId);
    });
    $.ajax({
        type: 'POST',
        url: './system/actions/discard.php',
        data: "gameId=" + gameId + "&cardArray=" + cardArray,
        success: function(data) {
            console.log(cardArray);
            console.log("Success.");
            console.log(data);
        }
    });
});

javascript将其发布到文件dispatch.php中,该文件具有两个参数:gameId和cardArray。 gameId现在是静态的,但是cardArray由页面上加载的每个“ .card”元素的DOM ID组成。 每个DOM ID都反映了我数据库中的card_id。

丢弃.php

//Classes
include $_SERVER["DOCUMENT_ROOT"] . '/system/classes/cards.php';

header("Content-Type: text/html");

$gameId = empty($_GET['gameId']) ? '' : $_GET['gameId'];
$numbers = empty($_GET['cardArray']) ? '' : $_GET['cardArray'];


$regex = preg_replace('/[^,;a-zA-Z0-9_-]|[,;]$/s', '', $numbers);
$cardArray = explode(",", $regex);

foreach ($cardArray as $cardId) {
    discardCards($cardId, $gameId);
};

reject.php应该从ajax请求中读取$ _GET标头。 但是由于某种原因,它失败了。 有趣的是,如果我直接使用手动GET标头调用该页面,例如浏览至:

domain.com/system/actions/discard.php?gameId=20&cardArray=["1","3“]

甚至

domain.com/system/actions/discard.php?gameId=20&cardArray=1,3

脚本工作正常!
我以为可能是以ajax格式发布的内容,因此使用了正则表达式,但是可惜,它没有用。 因为我什至不确定如何在调用的页面上显示或查看所请求的ajax数据URL,所以发现调试起来特别困难。

有什么建议么? 提前致谢。

您正在使用:

type: 'POST',

但是您将其接收为$_GET ,将其更改为$_POST

$gameId = empty($_POST['gameId']) ? '' : $_POST['gameId'];
$numbers = empty($_POST['cardArray']) ? '' : $_POST['cardArray'];

或将AJAX函数更改为:

type: 'GET',

而且, data应该是字符串。 因此,使用serialize()

$(form_id).serialize();

其中form_id是表单的id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM