即使使用$ _SERVER global,PHP标头也始终会给出错误的未定义索引

时间:2015-05-29 17:14:21

标签: javascript php jquery ajax

我正在执行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');

1 个答案:

答案 0 :(得分:0)

您希望以不同的方式获取标题:

$headers = getallheaders();

if(array_key_exists('Action', $headers) && $headers['Action'] != '')
{
//Do Something
}