Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax调用返回未定义的_Ajax_Api_Reactjs - Fatal编程技术网

Ajax调用返回未定义的

Ajax调用返回未定义的,ajax,api,reactjs,Ajax,Api,Reactjs,我正在尝试进行API调用,并在Ajax不是函数的情况下出现以下错误: import $ from 'jquery'; const apiCall = function () { var url = 'https://images.nasa.gov/#/search-results'; var request = { q: 'sun', media_type: 'image' }; var result = $.ajax({ url: url,

我正在尝试进行API调用,并在Ajax不是函数的情况下出现以下错误:

import $ from 'jquery';

const apiCall = function () {
  var url = 'https://images.nasa.gov/#/search-results';

  var request = {
    q: 'sun',
    media_type: 'image'
  };

  var result = $.ajax({
    url: url,
    dataType: 'json',
    data: request,
    type: 'GET'
  })
  .done(function() {
    alert(JSON.stringify(result));
  })
  .fail(function() {
    alert('failed');
  })
}

module.exports = apiCall;
我在另一个模块中导入上述内容,并在react的render()函数中单击按钮调用它,如下所示:

import apiCall from './../api/apiCall';

class Gallery extends React.Component {
  render () {
    return (
      <section id="gallery" className="g-site-container gallery">
        <div className="grid grid--full">
          <div className="gallery__intro">
                <Button extraClass=""
                  type="button"
                  handleButtonClick={apiCall} />
          </div>
        </div>
      </section>
    )
  }
}

module.exports = Gallery;
从“/../api/apiCall”导入apiCall;
类库扩展了React.Component{
渲染(){
返回(
)
}
}
module.exports=画廊;

有没有想到我做错了什么?

根据我的经验,这类问题通常是因为您的传输没有像您预期的那样工作-或者您在传输代码的同时还使用了
jquery
(或任何其他库),将其包含在CDN链接中。如果是这种情况,下面的一些信息可能会帮助您解决问题:

首先,检查您的transpiler是否正在实际拉入
jquery
。仅将其放在页面上并不一定允许此代码工作-因为当您的transpiler在以下位置运行时:

import $ from 'jquery'
它将首先从
node\u modules
加载
jquery
包,然后为它创建一个内部名称,例如
$\u 1
,它将在包中使用。如果您打算通过CDN在页面上包含
jquery
,而不是以这种方式捆绑,则需要在
webpack
rollup
配置中将其标记为
external
。如果使用
webpack
,它看起来像:

{
  entry: '/path/to/your/application.js',
  externals: {
    'jquery': '$',
  }
}
这本质上告诉webpack,“当我从
'jquery'
导入时,不要查看
节点\u模块
——而是假设
jquery
已作为
窗口存在于页面上。$
。现在,
webpack
不会尝试包含和捆绑所有的
jquery
lib,而是创建
$\u 1
它实际上会尊重
$
是什么

如果您确实打算将
jquery
作为构建的一部分进行加载和绑定(不建议这样做,因为它会导致难以置信的大小膨胀)-我建议确保它安装在
节点模块中。您可以通过以下方式执行此操作:

npm install -S jquery
或者,如果您使用的是
纱线

yarn add jquery

现在,在传输时,您的
import
语句应该正确加载库。

根据我的经验,这种类型的问题最常见的原因是,您的传输没有按预期工作,或者您正在传输代码,同时还使用
jquery
(或任何其他库),方法是将其包含在CDN链接中。如果是这种情况,下面的一些信息可能会帮助您解决问题:

首先,检查您的transpiler是否正在实际拉入
jquery
。仅将其放在页面上并不一定允许此代码工作-因为当您的transpiler在以下位置运行时:

import $ from 'jquery'
它将首先从
node\u modules
加载
jquery
包,然后为它创建一个内部名称,例如
$\u 1
,它将在包中使用。如果您打算通过CDN在页面上包含
jquery
,而不是以这种方式捆绑,则需要在
webpack
rollup
配置中将其标记为
external
。如果使用
webpack
,它看起来像:

{
  entry: '/path/to/your/application.js',
  externals: {
    'jquery': '$',
  }
}
这本质上告诉webpack,“当我从
'jquery'
导入时,不要查看
节点\u模块
——而是假设
jquery
已作为
窗口存在于页面上。$
。现在,
webpack
不会尝试包含和捆绑所有的
jquery
lib,而是创建
$\u 1
它实际上会尊重
$
是什么

如果您确实打算将
jquery
作为构建的一部分进行加载和绑定(不建议这样做,因为它会导致难以置信的大小膨胀)-我建议确保它安装在
节点模块中。您可以通过以下方式执行此操作:

npm install -S jquery
或者,如果您使用的是
纱线

yarn add jquery

现在,在传输时,
import
语句应该正确加载库。

首先,确保您没有使用,因为它排除了
ajax
功能

顺便说一句,不建议同时使用
exports.module
和ES6的
import/export
。试着只使用其中一个。不太确定,但它可能会导致一些难以理解的
模块
问题

此外,根据官方文档,您必须在回调中处理数据

  $.ajax({
    url: url,
    dataType: 'json',
    data: request,
    type: 'GET'
  })
  .done(function(data) {
    // Process data provided from callback function
    alert(data);
  })
  .fail(function() {
    alert('failed');
  })

就我个人而言,我更喜欢在
React
应用程序中调用ajax。

首先,确保您没有使用ajax,因为它排除了
ajax
功能

顺便说一句,不建议同时使用
exports.module
和ES6的
import/export
。试着只使用其中一个。不太确定,但它可能会导致一些难以理解的
模块
问题

此外,根据官方文档,您必须在回调中处理数据

  $.ajax({
    url: url,
    dataType: 'json',
    data: request,
    type: 'GET'
  })
  .done(function(data) {
    // Process data provided from callback function
    alert(data);
  })
  .fail(function() {
    alert('failed');
  })

就我个人而言,我更喜欢在
React
应用程序中调用ajax。

有什么错误?如果您不告诉我们它是什么,就无法解决问题。Hi@gravityplanx,在第一行告诉您,我得到了
\u jquery2.default.ajax不是一个函数,并且未从
控制台.log($.ajax)
中定义。尝试在
$(文档)中使用$.ajax。就绪(函数(){
?@SrikanthJeeva,我试过了,但不幸的是没有运气。我得到了同样的错误。有人在这里报告了类似的错误。你试过了吗?错误是什么?如果你不告诉我们它是什么,就无法解决问题。嗨@gravityplanx,在第一行告诉你,我得到了
\u jquery2.default.ajax不是一个函数
console.log($.ajax)
尝试在
$(文档)中使用$.ajax.ready(function(){
?@SrikanthJeeva,我已经尝试过了,但不幸的是没有运气。我遇到了相同的错误。有人报告了一个s