Javascript jquery解析器之前的ajax响应反序列化

Javascript jquery解析器之前的ajax响应反序列化,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我有一个api控制器,可以响应具有十进制属性的模型。 您知道响应类型只是一个简单的字符串。 我知道将大十进制数据转换为javascript数字可能会丢失一些数据。 因此,我想在jquery json.parser之前将一个十进制数(例如超过10个的变种数)数据转换为字符串?您可以使用正则表达式手动解析。这个(或类似的东西)应该可以让您获得字符串: str.match(/"property_name": .+,/) 然后像这样剪辑其余部分: matched_str.replace(/"prope

我有一个api控制器,可以响应具有十进制属性的模型。 您知道响应类型只是一个简单的字符串。 我知道将大十进制数据转换为javascript数字可能会丢失一些数据。
因此,我想在jquery json.parser之前将一个十进制数(例如超过10个的变种数)数据转换为字符串?

您可以使用正则表达式手动解析。这个(或类似的东西)应该可以让您获得字符串:

str.match(/"property_name": .+,/)
然后像这样剪辑其余部分:

matched_str.replace(/"property_name": /)

把逗号从结尾剪掉也应该很简单。这不是最优雅的,但它会完成任务。

您必须开发jQuery Ajax设置、angular$http拦截器,无论什么,当您获得响应实例时,您可以执行以下操作:

 if (response.body != null && typeof response.body === "string") {

      response.body = (response.body as string).replace(/:\s*(\d{14,}.\d{2,})\s*([,\}])/g, ':"$1"$2');

      // this will change "{ number : 214748364711111.2 }" to "{ number : '214748364711111.2' }"

  }
注意,您必须在底层框架调用JSON.parse之前更改响应

对于jQuery,这意味着$(document).ajaxComplete方法。
更多详细信息,请参见

$.get(“/api/values”,{},函数(returnData){})我有类似的东西,但returnData不是字符串,它的类型是json,但我的问题不是如何替换字符串,问题是jquery如何解析字符串响应?!什么时候哪里?哦,JQuery为您提供了这个功能,但是您可以手动提出自己的请求。我相信这就是JQuery在幕后所做的。读一读。不过,这将是更多的工作。为什么API将这个值存储为一个太大的数字?web API响应只是一个字符串,但问题是当jquery将它的字符串解析为json时!它试图将一个大的十进制数据转换成javascript中的一种数字,在我们没有大数据的情况下,这很酷,但当数据如此巨大时,javascript数字会丢失一些数据@AliKhalili您是否查看了我发送给您的链接中的手动XMLHttp请求?我想这可能就是你想要的。没关系,但是如何在jQueryAjax或AngularJSHTTP请求中使用它呢?不是纯javascript?