【问题标题】:undefined is not a function (evaluating x.json())undefined 不是函数(评估 x.json())
【发布时间】:2017-12-12 18:39:39
【问题描述】:

我正在使用 webview onmessage 从 webview 获取传递数据以做出本机反应。我传递的数据是 json 并且我将它作为纯文本传递(这样我可以在 react native 上解析纯数据)。当我尝试使用 .json() 解析 Json 时,出现此错误:

undefined is not a function (evaluating x.json())

我不知道我必须如何或在哪里实现 json() 函数,所以我没有收到此错误。我正在使用以下代码。

  onMessage( event ) {
    Alert.alert(
      'On Message',
      event.nativeEvent.data.json(),
      [
        {text: 'OK'},
      ],
      { cancelable: true }
    )
  }

  <WebView
    ref={( webView ) => this.webView = webView}
    onMessage={this.onMessage}
    source={{uri: 'https://app.sodge.co/login/twitter?redirect=../response.html'}}
  />

函数在不使用 .json() 的情况下正确执行(但我得到的只是你可以理解的纯文本,因为它没有被解析)

【问题讨论】:

    标签: javascript json reactjs react-native


    【解决方案1】:

    在 javascript 字符串中没有 json 方法。请改用JSON.parse。 另一种选择是在字符串上添加json 方法;

    String.prototype.json = function () {
        return JSON.parse(this);
    };
    

    编辑

    对于 react-native,您应该像这样进行原型设计,并将其导入应用根目录中的某个位置:

    Object.defineProperty(String.prototype, 'json', {
      value: function() { return JSON.parse(this); },
      enumerable: false
    });
    

    【讨论】:

      【解决方案2】:

      字符串没有.json() 方法(如fetch response bodies do)。你会想要使用

      JSON.parse(event.nativeEvent.data)
      

      【讨论】:

      • 我得到的只是'预期的动态类型字符串,但有类型对象'
      • @QUIQUELHAPPY 你在用打字稿吗?
      【解决方案3】:

      来自docs

      window.postMessage 接受一个参数,数据,它将在事件对象 event.nativeEvent.data 上可用。数据必须是字符串。

      相反,您需要将 JSON 解析为

      JSON.parse(event.nativeData.data)

      【讨论】:

        【解决方案4】:

        看起来 React Native 文档明确声明 event.nativeEvent.data 必须是一个字符串:

        window.postMessage 接受一个参数,数据,它将在事件对象 event.nativeEvent.data 上可用。数据必须是字符串。

        由于数据是字符串,所以使用JSON.parse 将其转换为有效的JSON 对象。

        【讨论】:

          猜你喜欢
          • 2018-10-30
          • 2019-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-05
          • 1970-01-01
          • 1970-01-01
          • 2013-08-01
          相关资源
          最近更新 更多