dongqiao1888
2018-04-20 12:59
浏览 59

错误:Ajax在jquery函数内调用服务器

I am trying to make an ajax call to a server in my local network installed with LAMP who is running wordpress. I am currently doing changes to files in a wordpress plugin.

I want to call a php file located into my server to get json data to build a chart from a sql request.

So I have ajaxStatistics.php where I coded the sql request and the json encode.

Now I am in statistics.js where I have my function to build a chart and this is where I do the ajax call :

jQuery(function() { 
    /**
     * call the ajaxStats.php file to fetch the result from db table.
     */
    $.ajax({
        url : "192.168.1.100/wp-content/plugins/pluginname/ajaxStatistics.php",
        type : "GET",
        success : function(data){
            console.log(data);
            ...

The result is an Uncaught TypeError: Cannot read property 'ajax' of undefined

at HTMLDocument.<anonymous> (statistics.js:92)
    at i (jquery.js?ver=1.12.4:2)
    at Object.fireWith [as resolveWith] (jquery.js?ver=1.12.4:2)
    at Function.ready (jquery.js?ver=1.12.4:2)
    at HTMLDocument.K (jquery.js?ver=1.12.4:2)

图片转代码服务由CSDN问答提供 功能建议

我正在尝试对运行wordpress的LAMP安装的本地网络中的服务器进行ajax调用。 我目前正在对wordpress插件中的文件进行更改。

我想调用位于我的服务器中的php文件来获取json数据以从sql请求构建图表。

所以我有一个ajaxStatistics.php,我编写了sql请求和json编码。

现在我在statistics.js中,我有自己的函数来构建 一个图表,这是我进行ajax调用的地方:

  jQuery(function(){
 / ** 
 *调用ajaxStats.php文件来获取结果 来自db表。
 * / 
 $ .ajax({
 url:“192.168.1.100/wp-content/plugins/pluginname/ajaxStatistics.php",
 type:”GET“,
成功:功能 (数据){
 console.log(data); 
 ... 
   
 
 

结果是未捕获的TypeError:无法读取未定义的属性'ajax'

  at HTMLDocument。&lt; anonymous&gt;(statistics.js:92)
 at i(jquery.js?ver = 1.12.4:2)
 at Object。  fireWith [as resolveWith](jquery.js?ver = 1.12.4:2)
在Function.r中 eady(jquery.js?ver = 1.12.4:2)
在HTMLDocument.K(jquery.js?ver = 1.12.4:2)
   
 
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dparivln22034 2018-04-20 13:05
    已采纳

    You are trying to access $ as jQuery before it gets initialized so to make it in proper way, you can use DOM load event of it like so...

    $(document).ready(function(){
        function build_statistics() {
            $.ajax({
            url : "http://192.168.1.100/wp-content/plugins/pluginname/ajaxStatistics.php",
            type : "GET",
            success : function(data){
                console.log(data);
            }
        }
    });
    

    And then call it like

    build_statistics()
    
    已采纳该答案
    打赏 评论
  • dongzh1988 2018-04-20 13:03

    That means that jquery has not been loaded.

    Make sure that you have the script in your html, and also wrap the call to this function sendData inside a

    $(document).ready(function(){
    //do stuff
    })
    
    打赏 评论
  • duanliujie8639 2018-04-20 13:04

    It seems like your $ variable is unreachable in your code.

    Try this:

    jQuery(function() { 
        /**
         * call the ajaxStats.php file to fetch the result from db table.
         */
        var $ = jQuery;
    
        $.ajax({
            url : "http://192.168.1.100/wp-content/plugins/pluginname/ajaxStatistics.php",
            type : "GET",
            success : function(data){
                console.log(data);
                ...
    

    And also make sure to add a http or https in your url.

    打赏 评论

相关推荐 更多相似问题