Firefox的异常“JavaScript组件没有命名的方法:‘可用’”(Firefox excep

2019-08-19 03:14发布

我建立与Django的web应用程序。 我通过Ajax(jQuery的v1.8.3)一群在Javascript API调用。

他们中的大多数工作,但一个特定的结果与状态0返回对象,这个消息作为状态文本:

[Exception... "'JavaScript component does not have a method named: "available"' when calling method: [nsIInputStream::available]" nsresult: "0x80570030 (NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED)" location: "JS frame :: http://127.0.0.1:8000/media/js/jquery.js :: .send :: line 8434" data: no]

jQuery中相应的行是xhr.send( ( s.hasContent && s.data ) || null );

然而,这仅发生在Firefox浏览器。 Chrome浏览器工作正常。 同样,其他请求做工作。 这台这一个分开的唯一的事情是DELETE HTTP方法。

该请求是如下(以铬所示HTTP的网络数据 - 萤火虫不显示在Firefox任何东西):

Request URL: http://127.0.0.1:8000/api/reservation/13/
Request Method: DELETE
Status Code: 400 BAD REQUEST    (This is expected)

Request Headers
Accept: application/json, text/javascript, */*; q=0.01
Content-Length: 15
Content-Type: application/json
Origin: http://127.0.0.1:8000
Referer: http://127.0.0.1:8000/reservation/
X-Requested-With: XMLHttpRequest

Request Payload
[object Object]

Response Headers
Cache-Control: no-cache
Content-Type: text/html; charset=utf-8
Date: Tue, 02 Apr 2013 19:18:35 GMT
Server: WSGIServer/0.1 Python/2.7.2

在服务器上,我没有收到任何请求。

该JS代码(直接从萤火观看断点处取):

options = {
    contentType: "application/json",
    data: Object {},
    dataType: "json",
    processData: false,
    type: "DELETE",
    url: "/api/reservation/13/",
    error: function(),
    success: function()
};
$.ajax(options);

我还没有尝试禁用FF所有扩展。 我跑v20.0。

Answer 1:

问题是火狐与jQuery /的XMLHttpRequest和发送对象经由HTTP DELETE的组合。 一旦JSON'ifying通过对象JSON.stringify()一切正常。

尽管如此,Firefox的一个奇怪的例外抛出。

由于freddyb的这一想法。



Answer 2:

问题是与叫物业processData的内$.ajax功能。 当此属性为“假”提供的(不知道为什么)Firefox不喜欢它,并作为结果,浏览器不易消化的JSON请求/响应包。 Chrome和Safari的作品就好了。



Answer 3:

发生这种情况(如2014年使用FireFox 32)与任何非GET AJAX请求时, 请求 data对象是一个空对象,像{} 我使用Mithril.js ,它可能涉及到的事实,秘银总是设置一个内容类型的非GET请求。 这绝对是一次重复我知道了扳机。

(请注意,“非GET ”部分可能不完全精确-秘忽略数据对象,如果它是一个GET所以发送具有使用底层AJAX对象也可能失败以相同的方式得到一个空对象。)

与直觉相反,设定data为空字符串, "" ,不以这种方式失败了,所以这是我的工作,各地。 其实我不是在所有的时候是没有的设置数据,如果它是由我发送请求(在我的AJAX的包装)时未设置我默认它""



Answer 4:

这听起来像你有一个马车Firefox扩展安装正试图检查XMLHttpRequest的数据和失败....

我建议你尝试http://support.mozilla.org/en-US/kb/troubleshoot-firefox-issues-using-safe-mode或只是禁止任何Firefox扩展参与。



文章来源: Firefox exception 'JavaScript component does not have a method named: “available”'