【问题标题】:Code is not working代码不工作
【发布时间】:2013-06-03 23:34:18
【问题描述】:

这是代码:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function nameNotAva()
{
alert("Name already exists.");
//some code
}

function nameCheck() 
{
var username = document.getElementById('uname').value;
var url = "http://rscript.org/lookup.php?type=namecheck&name=";
var curl = url + username;
 $.ajax({
     url : curl,
     type : 'GET',
     success : function(urlOutput){ 
             if(urlOutput.contains('NAMECHECK: NOTAVALIBLE')){ 
                  nameNotAva(); 
               } 
          }
   });
}
</script>
</head>
<body>
<input class="textBox" id="uname" type="text" maxlength="15" required/>
<input type="button" onclick="nameCheck()" value="Submit">
</body>
</html>

问题出在$.ajax 部分。我知道这一点是因为当我将alert(curl); 放在 ajax 部分之前时,它会显示正确的 URL。如果你想要我想要做的完整信息然后转到-How to check output of a created URL?

我正在使用最新版本的 jquery 库。

【问题讨论】:

  • String.prototype.contains 在 JavaScript 中不是一个东西;可能就是这样。 if(urlOutput.indexOf('NAMECHECK: NOTAVALIBLE') !== -1)。另外,你有 jQuery 吗?
  • “究竟”是什么问题。您只指定“存在”问题。如果您想检查发生了什么,请使用:FireBug、Chrome Developer ToolBar 或 IE Developer ToolBar。它们都可以通过按 F12 访问 - 除了 FireBug,您需要先下载并安装到 FireFox 中
  • 也许您应该包含您的 jQuery 库。这可能会有所帮助。
  • 你的成功函数被击中了吗?
  • @sdnr1 — 不,不是很明显,您提供了一个看似完整的 HTML 文档。通常不会期望重现您的问题所需的一些代码会从中丢失。

标签: javascript ajax cross-domain


【解决方案1】:

您没有包含 jQuery 库,因此 $ 未定义,脚本将在 Ajax 部分出错。

一般来说,如果您对某些 JavaScript 有问题:在浏览器中打开 JS 控制台并注意任何错误消息。

更新后cmets提示问题中的代码不完整

这是我正在使用的库-&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js" type="text/javascript" /&gt;

脚本元素未定义为空。结束标签是必需的。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js">
</script>

【讨论】:

  • 这是我的第一个想法,但我希望它不是那么简单!
  • @sdnr1 — 您的意思是“&lt;script /&gt;”是“正确的”吗?(不是)或者您再次提供的代码不是您实际使用的代码?
  • 我用过&lt;/script&gt;。你所说的是我在评论中犯的一个打字错误。
【解决方案2】:

http://jsfiddle.net/ksJEj/

更改输入类型:

&lt;input type="submit" value="Submit"/&gt;

在你的&lt;head&gt;&lt;/head&gt; 标签中包含这个:

HTML

<script type="text/javascript" src="ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

还有这个:

HTML/JavaScript

<script type="text/javascript">
$(document).ready(function{
    function nameNotAva() {
        alert("Name already exists.");
        //some code
    }

    $('input[type="submit"]').click(function (event) {
        event.preventDefault();
        var username = $('#uname').val();
        $.get("http://rscript.org/lookup.php", {
            'type': 'namecheck',
            'name': username
        }, function (urlOutput) {
            if ($(urlOutput).contains('NAMECHECK: NOTAVALIBLE') == true) nameNotAva();
                else alert("woohoo");
        });
    });
});
</script>

【讨论】:

  • @sdnr1 您正试图从 AJAX 查询中获取另一个网站的 html 数据。该错误是由access-control-cross-origin 问题引起的。解决此问题的唯一方法是接收 json 数据或允许特定服务器向您发送 html 数据。此代码有效。您无法修复服务器的事实不是我的问题。不客气。
  • 非常感谢您的帮助。但我不明白为什么代码对我不起作用。它也不适用于您提供的 jsfiddle 链接,即jsfiddle.net/ksJEj。我还发现了一个 java 应用程序,它与我正在尝试做的类似。这是源代码-crazyandcoding.com/downloads/source/namecheckersrc.rar,但我不知道它是如何工作的,因为我不知道 java
猜你喜欢
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 2011-08-28
相关资源
最近更新 更多