我正在执行ajax请求跨域。我一直在尝试使用返回数组中标题的函数,但发现我得到了Undefined Index,即使我可以在我的ajax请求中返回它们的值并将它们打印到屏幕上。
我在SO上发现了一些帖子,说我应该使用$ _SERVER全局变量。所以我切换到那个方法只是为了得到相同的结果。
这是我的jQuery:
setTimeout(function() {
jQuery.ajax({
url: 'http://something.com',
type:"POST",
dataType:"json",
crossDomain:true,
contentType:"application/json",
data: jsonData,
processData:false,
cache:false,
beforeSend: function( xhr ) {
xhr.setRequestHeader("Authorization",api_key[index]);
xhr.setRequestHeader("Action","PUSH");
},
success: function(data) {
alert(data.action);
alert(data.platform + ' : ' + data.message + ' : ' + data.app_name );
if(data.message == 'success')
{
jQuery('#hollmanPNs_send_push div#hollmanPNs_progressbar' + index).progressbar("value",100);
//add message to the paragraph for app name
jQuery('#hollmanPNs_send_push p#hollmanPNs_paragraph' + index).append(': Complete');
}
},
error: function(jqXHR, textStatus, errorThrown) {
alert( 'We had an error: ' + textStatus + errorThrown );
}
}).fail(function() {
alert( 'We had a failed AJAX call.');
});//end ajax
}, index * 5000);//end timeout function
以下是我用于PHP的内容:
if($_SERVER['HTTP_ACTION'] != '')
{
//Do Something
}
我尝试过切换到:
xhr.setRequestHeader("X-Action","PUSH");
和
$_SERVER['HTTP_X_ACTION']
具有相同的结果。只有我无法将它们归还给我的ajax请求。
我使用的是PHP 5.3.3。
我也在使用这个功能,我根据当时正在尝试的不同标题进行更改:
header('Access-Control-Allow-Headers: Action, Authorization, Content-Type');
答案 0 :(得分:0)
您希望以不同的方式获取标题:
$headers = getallheaders();
if(array_key_exists('Action', $headers) && $headers['Action'] != '')
{
//Do Something
}