【问题标题】:Ajax.request throws a syntax error, but returns the correct valueAjax.request 抛出语法错误,但返回正确的值
【发布时间】:2009-05-28 16:06:25
【问题描述】:

我有一堆执行得很好的 Ajax 请求,但最终在我的浏览器中出现语法错误。

谁能看到我下面的请求有什么问题?

function getName(refId)
{
    var resp = '';
    new Ajax.Request('/servlet/GetName',
    {
        method:'post',
        parameters: {'requestType':'ref',
                 'value':refId},
        onSuccess:function(transport)
        {
            setName((String(transport.responseText)).trim());
        }
    });
}

edit:这似乎也只在第一次被调用时抛出错误。如果我清除控制台,我不会继续收到错误。

【问题讨论】:

  • 语法错误localhost:8080/servlet/<ServletName> 第一行
  • 你能粘贴你的实际代码块而不是存根吗?这可能有助于发现语法错误。我之前也遇到过类似的情况,FF 可以正常工作,但 IE 会抛出语法错误。更常见的是,这是由于在 Ajax.Reqeuest() 的参数后面放错了/多余的逗号。
  • 我已编辑帖子以显示完整功能。我有几个略有不同,但都抛出语法错误。

标签: javascript ajax syntax prototypejs


【解决方案1】:

我在 Firefox 中使用 xmlhttprequest 查询非 xml 时也遇到了语法错误。 Firefox 尝试将响应解析为 xml,并记录错误,但仍然可以正常工作。

在我的例子中,我将它添加到服务器端的 php 中:
header('Content-Type: text/plain');

有人在此处报告了客户端修复:
jQuery .getJSON Firefox 3 Syntax Error Undefined

【讨论】:

  • 我终于解决了这个问题,并且在标题中设置内容类型有效!非常感谢。我将此行添加到我的 servlet: response.setContentType("text/plain");
【解决方案2】:

根据W3Schools,窗口对象中没有根属性。也许如果你使用

new Ajax.Request(document.domain + '/servlet/GetName', ...

效果会更好。

编辑,啊-我应该学会阅读。它确实有效,但会引发语法错误。语法错误!= 没有实现的属性...对不起!但无论如何我都会让我的帖子留下来。 ;)

【讨论】:

  • 事实证明,window.root 没有返回任何内容,它隐式地将“localhost:8080”添加到我的请求中。将其更改为 document.domain 更改了请求 url,使其不再起作用。硬编码网址没有任何区别。
猜你喜欢
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 2015-09-04
  • 2012-03-08
  • 1970-01-01
  • 2021-07-29
相关资源
最近更新 更多