-1

可能重复:
在 PHP 中检测 Ajax 并确保请求来自我自己的网站

我有一个上传图片的表格,我正在使用Ajaxform()

$('#uploadformimage').ajaxForm({

    beforeSend: function() {
         $(".progress").css("display","block");
         $("#response").html("");
        status.empty();
        var percentVal = '0%';
        bar.width(percentVal)
        percent.html(percentVal);
    },
    uploadProgress: function(event, position, total, percentComplete) {
        var percentVal = percentComplete + '%';
        bar.width(percentVal)
        percent.html(percentVal);
        //console.log(percentVal, position, total);
    },
    complete: function(xhr) {
            $(".bar").css("width","100%");
            $(".percent").html("100%").delay("8000").parent().slideUp(1000);
            $("#response").html(xhr.responseText);

    }
}); 

这是我的 javascript 代码。我想server-side知道表单是否由 ajax 上传?Javascript 可能在某些计算机上被禁用,所以我想显示一些不同的数据?

4

5 回答 5

2
if ($_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest')
{
    // This is an AJAX request
}
于 2012-10-06T06:57:13.887 回答
1

我建立了一个演示,这是结果

Request URL:http://localhost/test.php
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:32
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Host:localhost
Origin:http://localhost
Referer:http://localhost/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11
X-Requested-With:XMLHttpRequest
于 2012-10-06T07:00:58.790 回答
0

您可以使用<noscript>HTML 中的标记生成不同的 HTML,以便表单可以发布到不同的服务器端脚本或向表单添加隐藏字段。

于 2012-10-06T08:16:26.013 回答
0

让我们假设不涉及 AJAX。

Javascript/AJAX 所能实现的就是让用户体验优于竞争对手。

那么,当图像由人上传时,您为什么要关心图像。该人可能没有Javascript,

只需追求最低限度并添加花里胡哨!

于 2012-10-06T07:10:37.163 回答
0

你可以通过一个选项GET /foo?xhr=1

然后在 PHP$_GET['xhr']

于 2012-10-06T06:53:33.857 回答