【问题标题】:How do you use AJAX using user input?您如何通过用户输入使用 AJAX?
【发布时间】:2015-11-14 01:09:04
【问题描述】:

我有一个项目来构建一个非常简单的网页,该网页将利用 AJAX 来显示结果。

在 main.py 我们有一个单词列表,

words = {
    'a': True,
    'aah': True,
    'aahed': True,
    'aahing': True,
    ..............
}

我们已经为我们定义了这个类:

class CheckWordHandler(webapp2.RequestHandler):
    def get(self):
        word = self.request.get('word')
        if word in words:
          self.response.out.write('true')
        else:
          self.response.out.write('false')
    def post(self):
        return self.get()

到目前为止,这是我唯一使用 AJAX 处理 index.html 的东西,每当您输入内容时,它只会显示一个新的随机数。我这样做只是为了了解它的工作原理。

function checkWord() {
    var xmlHttp = createXmlHttp();
    xmlHttp.onreadystatechange=function() {
        if(xmlHttp.readyState == 4) {
            var text = Math.random();
            var d = document.getElementById('texthere');
            d.innerHTML = text;
        }
    }     
    postParameters(xmlHttp, '/check', '');

}

但是我正在考虑如何使用 checkwordhandler 来显示用户是否正在输入列表中的单词。如何让处理程序检查用户输入?

我有一个表单,用户可以在其中输入任何内容

<form >
    Enter a word:<br>
    <input type="text" onkeypress="checkWord()" name="word">
    <br>
</form> 

那么,我将如何从这个表单中获取输入并使用 xml 检查它是否在单词列表中?

【问题讨论】:

  • 我会在客户端缓存单词,而不是在每次按键时重新请求它们。
  • postParameters 是做什么的?
  • postParameters 是一个具有 xmlHttp.open(); 的函数和 xmlHttp.send();

标签: javascript python ajax forms


【解决方案1】:

更改输入以发送用户输入的值:

onkeypress="checkWord(this.value)"

并更改 AJAX 函数以将值作为参数发送,并显示响应文本。

function checkWord(word) {
    var xmlHttp = createXmlHttp();
    xmlHttp.open('GET', '/check?word=' + encodeURIComponent(word), true);
    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState == 4) {
            var text = xmlHttp.responseText;
            var d = document.getElementById('texthere');
            d.innerHTML = text;
        }
    } 
    xmlHttp.send();
}

【讨论】:

  • 感谢您的回复!我正在将 xmlHttp.responseText() 打印到我的网页中,以查看它是返回“true”还是“false”,但我不断收到“null”。我不觉得我有正确的项目被退回,但我没有看到我的错误。但正确的请求正在发送。
  • 您确定/check 是脚本的正确路径吗?您在 Javascript 控制台中看到任何错误吗?
  • 是的,检查路径是否正确。 CheckWordHandler 如何使用 self.response.out.write('true') 向 xmlHttp.responseXML 发送“真实”值?我很困惑他们如何与这两段代码进行通信。
  • 如果你只是写一个字符串,你不应该使用responseXML,使用responseText。您是否在控制台的“网络”选项卡中看到响应?
  • 是的!原来是我的问题!不幸的是,我想通了...
猜你喜欢
  • 2012-06-27
  • 2011-02-20
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
相关资源
最近更新 更多