当前位置: 首页 > 知识库问答 >
问题:

jQuery ajax中没有定义变量

罗俭
2023-03-14

我通常使用javascript ajax,一切工作都很好,但wordpress需要jquery ajax,我不熟悉。

为什么没有定义下面代码中描述的变量?


var option = "'USER_ID': 'my id is 32',"
var note = "'this is my first note'";

    jQuery(document).ready(function($) {

        var data = {
            'action': 'my_action',
             option   //this does not work. <--- WHAT DO YOU MEAN DOES NOT WORK?
            'USER_NOTE': note  //this does not work. <--- WHAT DO YOU MEAN DOES NOT WORK?
            
        };

        // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
        jQuery.post(ajaxurl, data, function(response) {
            alert('Got this from the server: ' + response);
        });
    });


共有3个答案

仇高韵
2023-03-14

下面是您的问题的代码页:https://codepen.io/geoidesic/pen/wvoeden

代码如下:

var option = "'USER_ID': 'my id is 32',"
var note = "'this is my first note'";


jQuery(document).ready(function($) {
  console.log(option); // proves that option is in scope
  console.log(note); // proves that note is in scope
  var data = {
            'action': 'my_action',
             option,
            'USER_NOTE': note
        };
  console.log(data); // proves that data is defined as specified

  jQuery.post('https://jsonplaceholder.typicode.com/posts', data, (response) => {
    console.log("response: ", response); // proves that the post request is working
  })
});

如果您查看控制台。您可以看到任何未定义的变量都没有问题。如果查看“网络”选项卡,可以看到POST请求已发送。

这也可以作为一个例子,说明如何更好地以人们能够实际帮助你的方式来表达你的问题,即使用CodePen或类似的方式。

屈俊远
2023-03-14

或者,只需将所有内容移到jQuery.ready中即可


  jQuery(document).ready(function($) {
    
    var option = "'USER_ID': 'my id is 32',"
    var note = "this is my first note";

    var data = {
        'action': 'my_action',
        option,                    
        'USER_NOTE': note           
        
    };

    jQuery.post(ajaxurl, data, function(response) {
        alert('Got this from the server: ' + response);
    });
  });

平学
2023-03-14

这是因为datajson对象没有正确定义。您需要将选项定义更改为有效的json对象:

var option = "'USER_ID': 'my id is 32',"

var option = {'USER_ID': 'my id is 32'}

并以不同的方式添加它,这样它就可以被正确地合并:

var data = {
        'action': 'my_action',
        ...option,                    
        'USER_NOTE': note           
        
    };

那应该能解决你的问题了。

 类似资料:
  • 我是通过npm安装来安装节点模块的,然后我在终端上尝试了gulp sass watch。和get ReferenceError:primordials未定义错误,如下所示,请帮助我解决此问题:- 提前感谢您。

  • 我试图创建一个网络商店购物车组件的减速器,但我遇到了这个错误: “操作”未定义 我的代码如下: 这就是cartActions的样子。似乎以前的代码必须以某种方式使用它,但是如何使用呢?从“axios”导入axios;从“…”导入{CART\u ADD\u ITEM}/常数/常数'; 导出常量addToCart=(id,数量)= 这有什么问题?

  • 本文向大家介绍javascript定义变量时有var和没有var的区别探讨,包括了javascript定义变量时有var和没有var的区别探讨的使用技巧和注意事项,需要的朋友参考一下 我们先来看一段代码 有过C++或Java编程经验的人可能会说:“这程序,死定了,变量竟然在引用了该变量的函数后边定义,bug会灭掉你的。”放在浏览器上运行一下,结果怎样?完美运行!接下来我们就说一下这是咋回事——有v

  • 问题内容: 刚开始使用Node.js。在我的文件中,我正在执行以下操作: app.js 当我在终端中运行时,控制台会弹出,但在浏览器中却显示。 有人可以向我解释为什么在终端中可以正常运行,但在浏览器中却不能正常运行吗? 我正在使用节点的服务我的页面。 问题答案: 在终端中,您正在运行节点应用程序,并且正在运行脚本。与直接在浏览器中运行脚本相比,这是一个非常不同的执行环境。尽管Javascript语

  • 用户可以在Playbook中,通过vars关键字自定义变量,使用时用{{ }}引用以来即可。 Playbook中定义和使用的变量的方法 例如下面的例子中,用户定义变量名为http_port,其值为为80。在tasks firewalld中,通过{{ http_port }}引用。 --- - hosts: web vars: http_port: 80 remote_user: r