AJAx 在 url 中带有查询字符串的脚本给出 404 not found

AJAx script with a query-string in the url gives 404 not found

我在这里非常缺乏经验,我的网站上有一个预制的插件。我无法联系作者,因为他似乎不再支持它了。他仍然有一个所有工作的演示页面,我已经尽我所能将我拥有的与他的最好的进行了比较,看起来是一样的,所以问题一定出在我用来托管我的 site/database 的 IIS 8.5 上。

这是我确定是罪魁祸首的代码:

"ajax": "inc/server_processing.php?type=getplayers",

server_processing 从不断变化的数据库中提取数据。您不能直接浏览该页面。此 ajax 脚本位于名为 players.php 的页面上,另一个页面 items.php 具有相同的 ajax 脚本,并且 returns 未找到 404。

"ajax": "inc/server_processing.php?type=allitems",

当您转到这些选项卡中的任何一个时,会出现 dataTables 警告:我知道数据库工作正常,因为如果您单击任何其他具有绝对路径而不是查询字符串的选项卡,它会显示收集的数据。

我觉得我没有很好地解释自己,对此我深表歉意,我所知道的一切都是我在过去两天试图解决这个问题时学到的。这是我的页面,这是带有工作副本的作者页面。

My site; Authors working site

注意:目录结构是 wwwroot/stats/inc/ 在 stats 文件夹中是 2.php 和 ajax 脚本,在 inc 文件夹中是 server_processing.php js 文件夹在 stats 文件夹内。

<script>
$(document).ready(function() {
    var players = $('#players').DataTable( {
        "processing": false,
        "serverSide": true,
        "ajax": "inc/server_processing.php?type=getplayers",
        "pagingType": "full",
        "columns": [
            { "data": "name" },
            { "data": "auth", "visible" : false },
            { "data": "kills" },
            { "data": "deaths" },
            { "data": "assists" },
            { "data": "kpd" },
            { "data": "kpm" },
            { "data": "playtime" },
            { "data": "disconnect_time" }
        ],
        "order": [[2, 'desc']]
    });
    $('#players tbody').on('click', 'tr', function () {
            window.location = "player.php?id="+players.cell(this, 1).data();
    });
});
</script>

您应该使用 HTTP 方法 GET 传递参数。

$.ajax({
    url: 'inc/server_processing.php',
    data: {
        type: 'getplayers'
    },
    type: 'get',
    success: function(){
        // insert code here
    }
});

虽然在这些情况下我通常更喜欢使用 POST 而不是 GET,但这最终取决于您和您的应用程序需求。

因此,对于我关于此数据表警告的特定问题,解决方法是在 IIS 中编辑 web.config 文件。我的数据表中的一些 URL 非常大,超过了 IIS 中的默认最大值。这就是我将其更改为:

<configuration>
  <system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxQueryString="3000" maxUrl="1000" />
            <fileExtensions>
                <remove fileExtension=".java" />
                <add fileExtension=".java" allowed="true" />
            </fileExtensions>
        </requestFiltering>
    </security>
</system.webServer>

您也可以通过在 IIS 中单击您的站点然后转到“请求筛选”来设置 maxQueryString 和 MaxUrl 来更改它。我希望如果其他人遇到这个问题或类似问题,它会对他们有所帮助。