php文件未读取AJAX数据变量

时间:2018-11-06 21:16:27

标签: php ajax pdo

我遇到了一个无法解决的问题。我创建了一个简单的按钮,可将AJAX数据发送到php文件。我已经定义了变量,并且在单击按钮时在控制台中显示正确,但是我的PHP文件未读取我正在设置的变量。我的php文件中的else语句正在触发。

有人看到为什么未在php文件中设置变量吗?

HTML

<button class="catalogDownload downloadButton" name="Profile Catalog" id="profileCatalogPDFButton" data-catalog-now="Profile Popular Button" data-catalog-view-name="Profile Catalog">Download Now</button>

AJAX

//Download Now AJAX
var catalog_name = '';
var button_triggered = '';
$('.downloadButton').on('click', function (event) {
    catalog_name = $(this).attr('name');
    button_triggered = $(this).data('catalog-now');
    console.log(catalog_name);
    $.ajax({
        url: 'urlhere.php',
        type: 'POST',
        data: {
            'catalog_name': catalog_name,
            'button_triggered': button_triggered
        },
        success: function (data) {
            //console.log(data);
        },
        error: function(xhr, textStatus, errorThrown) {
            alert(textStatus + "|" + errorThrown);
        },
        cache: false
    });
});

PHP文件

ini_set('display_errors', 1);
error_reporting(E_ALL);

//$catalog_name = $_POST['catalog_name'];
if(isset($_POST['catalog_name'])){ 
    $catalog_name = $_POST['catalog_name'];
} else {
    echo 'Catalog Name is not reading';
}

1 个答案:

答案 0 :(得分:2)

从代码中删除不必要的内容,尤其是contentType: false

应将其删除

cache: false, contentType: false, processData: false

当将contentType设置为false时,将不会设置标头Content-Type,PHP将无法读取变量并将其放入$ _POST数组

摘自手册:

  

$ _ POST-使用 application / x-www-form-urlencoded multipart / form-data 时,通过HTTP POST方法传递给当前脚本的变量的关联数组strong>

如果要在不设置Content-Type的情况下进行读取,则需要使用以下内容读取原始请求:

$postRequestContent = file_get_contents('php://input');