goog.net.xhrio.send没有调用服务器

时间:2012-07-04 21:29:43

标签: google-closure plovr

我在这个onclick事件中调用goog.net.XhrIo

goog.events.listen(invBtn, goog.ui.Component.EventType.ACTION,
        function(e) {

   goog.net.XhrIo.sent('http://remotehost.com:8080/customer/add');
 (update :typo here send instead of sent )

这是我想要完成的非常基本的任务,但此调用甚至无法到达服务器。我也尝试将url作为goog.Uri传递,但没有帮助。 我想知道是什么停止向服务器发出此调用,我尝试了主机名和IP地址,但都没有帮助。它什么也没做。

我能做些什么来了解为什么这个电话甚至无法到达服务器。

感谢任何帮助

问候 埃迪

1 个答案:

答案 0 :(得分:2)

plovr配置文件中,将警告级别设置为VERBOSE

// config.js
{
  "paths": "js",
  "mode": "ADVANCED",
  "level": "VERBOSE"
}

启用VERBOSE警告后,运行程序会显示以下警告:

JSC_INEXISTENT_PROPERTY: Property sent never defined on goog.net.XhrIo ...
goog.net.XhrIo.sent('http://remotehost.com:8080/customer/add');
^

尝试将goog.net.XhrIo.sent();更改为goog.net.XhrIo.send();

此外,您可能希望将回调函数传递给XhrIo发送函数,如下所示:

goog.net.XhrIo.send('http://remotehost.com:8080/customer/add', function(e) {    
  var xhr = /** @type {goog.net.XhrIo} */ (e.target);
  alert(xhr.getResponseText());
});

另一种常见模式是创建一个xhr对象并注册一个事件监听器:

var xhr = new goog.net.XhrIo();
goog.events.listenOnce(xhr, goog.net.EventType.COMPLETE, function(e) {
  var xhr = /** @type {goog.net.XhrIo} */ (e.target);
  alert(xhr.getResponseText());
  xhr.dispose(); // Dispose of the XHR if it is not going to be reused.
});
xhr.send('http://remotehost.com:8080/customer/add');

进一步阅读

Closure: The Definitive Guide,第7章: 客户端 - 服务器通信