我遇到了一个无法解决的问题。我创建了一个简单的按钮,可将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';
}
答案 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');