【问题标题】:POST fails with ReadableNativeMap cannot be cast to String errorPOST 失败,ReadableNativeMap 无法转换为字符串错误
【发布时间】:2018-04-22 23:14:23
【问题描述】:

我在 React Native 工作,我使用 PHP 作为后端,当我使用 fetch POST 请求时,我得到了很奇怪的错误,我不知道为什么会这样。我检查了网址,所以它没有问题,正常的fetch() 在没有POST 的情况下也可以正常工作,但是当我尝试发布它时会发生。当我在本地服务器中尝试获取 POST 时,它可以工作.. 但在服务器中,我收到此错误:

错误:com.facebook.react.bridge.ReadableNativeMap 无法转换为 java.lang.String

反应原生代码:

fetch('http://xxx/react_test1', {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: inputName,
    email: inputEmail,
    phone: inputPhone
  }),
}).then((response) => response.json())
  .then((responseJson) => {
    Alert.alert(responseJson);
  }).catch((error) => {
  alert(error);
});

【问题讨论】:

  • 这个请求对我来说确实不错。您可以通过检查有效负载正文并查看值是否有效来进行调试吗?
  • 我猜答案是 Alert.alert('string', responseJson),试试这样,因为 Alert.alert 需要 2 个值。

标签: react-native fetch


【解决方案1】:

Alert.alert 接收一个字符串,而您从 fetch 响应中得到的是内部的 com.facebook.react.bridge.ReadableNativeMap 对象(这是 fetch 的本机实现返回的内容)。 你可以试试:

Alert.alert(JSON.stringify(responseJson))

如果你使用的是 iOS,你会得到一个完全不同的错误:

Exception '-[_NSFrozenDictionaryM length]: unrecognized selector  ...

【讨论】:

  • 好的,我会检查代码的警报部分并更改它并通知您。
  • 我现在检查它给出了其他错误但在警报内部,所以我们修复了这个。新错误是:{"message":"",exception":"Symfony\\Component\\HttpKernel...
  • 我认为它与 Laravel / PHP 部分有关,所以我需要修复那里。那么再次感谢您!
【解决方案2】:

Alert.alert 只接受字符串作为输入。

改用alert() 来显示弹出窗口。

示例:alert("Response: ", responseJson)

快乐编码。 :)

【讨论】:

    猜你喜欢
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 2017-08-24
    • 2021-12-13
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多