在url中带有查询字符串的AJAx脚本会找不到404

时间:2015-04-10 17:06:45

标签: jquery ajax http-status-code-404 query-string

我在这里非常缺乏经验并且在我的网站上有一个预制的插件。我不能联系作者,因为他似乎不再支持它了。他仍然有一个所有工作的演示页面,我已经比较了我能做到的最好的东西,它似乎是相同的,所以问题必须在IIS 8.5我用来托管我的网站/数据库。

以下是我确定的罪魁祸首:

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

server_processing从始终在变化的数据库中提取数据。您无法直接浏览此页面。这个ajax脚本位于名为players.php的页面上,另一个页面items.php具有相同的ajax脚本,并且还返回404未找到的脚本。

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

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

我觉得我并没有很好地解释自己,我为此道歉,我在解决这个问题的最后两天里学到了我所知道的一切。这是我的页面,这里是带有工作副本的作者页面。

My site; Authors working site

注意:目录结构是wwwroot / stats / inc / in stats文件夹是带有ajax脚本的2 .php,而在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>

2 个答案:

答案 0 :(得分:0)

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

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

虽然在这些情况下我通常更喜欢使用POST而不是GET,但这取决于你和你的应用程序在一天结束时的需求。

答案 1 :(得分:0)

因此,对于我对此数据表警告的特定问题,修复是在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。我希望,如果其他人遇到这个问题或类似问题,它会帮助他们。