使用 Ajax 的 jQuery 中的错误

Posted

技术标签:

【中文标题】使用 Ajax 的 jQuery 中的错误【英文标题】:Error in jQuery with Ajax 【发布时间】:2013-05-06 17:27:01 【问题描述】:

我正在使用 jquery Ajax 以下代码行,只有 FirefoxBlackbarry 浏览器存在问题

职位:

navigator.geolocation.getCurrentPosition(currentPosition);

function currentPosition(res)
                window.res = res;

代码:

var postion = window.res;

    $.ajax(
          url: 'SendLocation',
          type: 'post', 
          data: position, // Position is navigator.geolocation.getCurrentPosition
          success: function(res)
                alert(res);
       
    );

错误:

NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal operation on WrappedNative prototype object

value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );

阅读FormData Object not submitting via jQuery AJAX call 帖子后,我添加了以下代码行,代码变为 处理数据:假, 内容类型:假,

更新代码:

$.ajax(
      url: 'SendLocation',
      type: 'post', 
      data: position, // Position is navigator.geolocation.getCurrentPosition
      processData: false,   //Added this line
      contentType: false,   //Added this line

      success: function(res)
            alert(res);
   
);

没有错误发生,但代码也停止工作。

【问题讨论】:

你的意思是,position = navigator.geolocation.getCurrentPosition?因为那将是无效的。 position = navigator.geolocation.getCurrentPosition(...) 也将无效。 你知道如何定位,而且它是异步的? @adeneo 我正在使用 gerolocation 异步。 @KevinB 我已经更新了问题以供您理解,但这只是一个示例。 发生的事情是 jQuery 试图将对象转换为字符串。您需要将所述对象转换为您的服务器端系统所期望的字符串,以便 jQuery 不会尝试为您执行此操作。您不能通过 ajax 按原样发送 javascript 对象,它必须转换为字符串格式。 jQuery 可以使用简单的对象为您处理这种转换,但对于更复杂的对象,它就不行了。 【参考方案1】:

我建议在您的位置变量上使用 serialize(),因为它会尝试发送地理定位 DOM 对象..

https://developer.mozilla.org/en-US/docs/DOM/window.navigator.geolocation.getCurrentPosition

如果您使用 firebug 并检查您的 POST 变量,则会出现此错误。

【讨论】:

No 不能使用 serailize 因为我需要 NodeJS 服务器上的对象。 @ArhamAliQureshi 您不能将任意 javascript 对象发送到服务器。也许您应该更具体地说明您要做什么。 @AaronDufour。我正在使用 NodeJS 服务器,它是一个了解 javaScript 对象的 javaScript 服务器。在 Chrome 和 IE10 中运行良好 @ArhamAliQureshi 重复自己真的不会让你到任何地方。 您实际上对对象做了什么? 我的猜测是它正在使用的浏览器在其toString 方法中序列化该对象。【参考方案2】:

感谢所有猜测帮助我,但在这里让我告诉你我做了什么。 我只是从 position 对象中选择我需要的值并创建一个新对象并用我从 position 获得的数据填充它并将其发布到服务器,现在它工作正常谢谢..!

【讨论】:

以上是关于使用 Ajax 的 jQuery 中的错误的主要内容,如果未能解决你的问题,请参考以下文章

错误放置在 Jquery 验证插件的选择标记顶部

如何使用jquery提供的$ajax方法向后台传对象集合

jQuery

使用 Ajax 的 jQuery 中的错误

用户管理的设计--4.jquery的ajax实现登录名的校验

31.jquery的ajax异步实现搜索提示栏