【问题标题】:'$' is not defined no-undef reactjs ajaxcall [duplicate]'$' 未定义 no-undef react js ajax 调用 [重复]
【发布时间】:2019-06-11 14:47:03
【问题描述】:

我试图根据answer 以表格格式显示 json 数据。每次我运行它时,它都会显示这个错误Line 15: '$' is not defined no-undef。我在第 15 行开始了 ajax 调用。我尝试在代码顶部添加 const $ = window.$;,但这并没有解决任何问题。

class App extends React.Component {
    constructor(){
      super() 
        this.state = {
          data: []
        }
      
    }
    componentDidMount() {
      $.ajax({
         url: "http://www.mocky.io/v2/5c3f2a6c3500004d00ec3789",
         type: "GET",
         dataType: 'json',
         ContentType: 'application/json',
         success: function(data) {
           
           this.setState({data: data});
         }.bind(this),
         error: function(jqXHR) {
           console.log(jqXHR);
         }.bind(this)
      })
    }
    render() {
      
          
      return (
        <table>
        <tbody>{this.state.data.map(function(item, key) {
               
                 return (
                    <tr key = {key}>
                        <td>{item.name}</td>
                        <td>{item.post}</td>
                        <td>{item.country}</td>
                        <td>{item.contact}</td>
                    </tr>
                  )
               
               })}</tbody>
         </table>
      )
    }
  }
  


ReactDOM.render(<App />, document.getElementById('root'));

对错误有帮助吗?

【问题讨论】:

  • 好像找不到jQuery 库。请在将脚本代码加载到 DOM 之前导入 jQuery 库。
  • 你导入了 jQuery 吗? import jQuery from 'jquery'

标签: javascript reactjs


【解决方案1】:

使用create-react-app时,首先需要像这样安装Jquery包。

sudo npm install jquery --save 

现在可以在 JS 文件中使用 jquery

import $ from 'jquery';

【讨论】:

  • 安装非全局节点依赖需要sudo吗?
  • 解决了错误。但是我的表格没有显示在浏览器中
  • sudo 用于 Mac 环境,当你使用 Windows 时尝试不使用 sudo (npm install jquery --save)
【解决方案2】:

您需要包含 jQuery 库。

import $ from 'jquery'; 

确保已安装 jquery 包。

【讨论】:

  • 解决了错误。但是我的表格没有显示在浏览器中
  • 使用console.log查看状态是否正确更新
  • 没有命中ajax成功函数。
  • 使用数据类型 jsonp 而不是 json。这解决了问题
  • console.log(data); 放入您的success function 以查看您的数据是否按原样到达。如果没问题,那么它与您的状态更新有关
【解决方案3】:

你甚至可能不需要在 React 中使用 jQuery,浏览器公开的 fetch API 就可以正常工作。我不会安装整个 jQuery 库来处理 Ajax 请求,而是使用 axios,在我看来它比 jQuery 轻量级。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2020-06-13
    • 2019-11-10
    • 2019-10-05
    • 2018-03-18
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多