【问题标题】:HTTP Error 405.0 - Method Not Allowed using Jquery ajax getHTTP 错误 405.0 - 不允许使用 Jquery ajax get 的方法
【发布时间】:2012-02-23 16:36:43
【问题描述】:

我正在开发一个用户必须插入用户名的表单。我想检查模糊用户的用户名是否有效:

我添加了这个脚本:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js"></script>

在 HTML 中:

<input name="username" type="text" onblur="checkUsername()">

脚本:

function checkUsername(){
    var usn = document.getElementsByName('username')[0];
    if(usn.value != "") {
       var html = $.ajax({
       type: "GET",
       url: "checkUsername.php?",
       data: "usr=" +usr.value 
       async: false,
       dataType: "text"}).responseText;   
       if(html == "si") {
          usn.style.backgroundColor = "green";
       } else {
          usn.style.backgroundColor = "red";
          usn.value = "Username still exists!";
       }
    }
}

所以onBlur 不起作用,当我提交表单时出现如下错误:

HTTP Error 405.0 - Method Not Allowed
The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.

我能做什么?问题出在哪里?

【问题讨论】:

标签: jquery ajax http-status-code-405


【解决方案1】:

通常当我从 Jquery 运行 AJAX 命令时,我的数据属性是这样的数组:

 $.ajax({
    type: "GET",
    url: "checkUsername.php",
    data: {
        usr: usr.value 
    },
   async: false,
   dataType: "text"}).responseText;   

【讨论】:

  • @JackTurky 它与你的 jQuery 脚本无关。
【解决方案2】:

首先考虑将您的 JQuery 升级到 1.6.x 版本。

试试这个修改后的脚本版本:

function checkUsername(){
    var usn = document.getElementsByName('username')[0];
    if(usn.value != "") {
       var html = $.ajax({
       url: "checkUsername.php",
       data: "usr=" +usr.value 
       async: false,
       dataType: "text"}).responseText;   
       if(html == "si") {
          usn.style.backgroundColor = "green";
       } else {
          usn.style.backgroundColor = "red";
          usn.value = "Username still exists!";
       }
    }
}

【讨论】:

  • 为什么是1.6.x?最新的稳定版本是1.7.1
  • 我知道,但有时从旧版本升级到最新版本会破坏现有代码。虽然 1.6.x 分支离 1.5.x 不远,但它充满了 $.ajax() 函数的错误修复:blog.jquery.com/2011/05/03/jquery-16-released
  • @JackTurky 您确定您尝试执行的请求不是跨域或用户名/密码保护的请求吗?尝试单独测试 php 脚本,调试 GET 参数,然后在 javascript 中做同样的事情,使用控制台而不是警报。
  • 完成!我不知道问题出在哪里,我重新缩进并全部更新 } ;)
【解决方案3】:

在选项中添加

dataType: 'jsonp',

【讨论】:

    【解决方案4】:

    要做的另一件事是检查您的ajax调用上方的javascript错误,这也会导致405错误......

    【讨论】:

      猜你喜欢
      • 2012-06-29
      • 2014-06-18
      • 2016-06-27
      • 2012-08-26
      • 2022-02-09
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      相关资源
      最近更新 更多