调用jQuery ajax函数

时间:2015-08-31 15:46:13

标签: jquery ajax wordpress

请耐心等待;我已经和它斗争了好几天。

我的jQuery(document).ready函数中有一些jQuery代码如下:

        jQuery(document).ready(function($) {
        jQuery.post(ajaxurl, data, function(response) {
          alert(response);
        });
    });

我有一个文本输入字段,我想发送到我的Ajax函数(使用Wordpress API)

    <input type="text" name="input" id=input onkeydown="if (event.keyCode == 13) {send_message(this.value);}">

如果用户按下该键,则该文本将发送到javascript&#39; send_message&#39;功能(下)。

function send_message(value){
  data[txt]=value;
  jQuery.post(ajaxurl, data, function(response) {
    alert(response);
  });
}

基本上,我已经添加了一个&#39;&#39;&#39;键/值对我的数据对象,我现在希望将其提交给我的ajax函数。

&#39;准​​备好的文件&#39;部分工作正常,但我无法接受更改的数据对象。

正如您可能知道的那样,我并没有很好地遵循jQuery代码背后的逻辑。

2 个答案:

答案 0 :(得分:0)

您的函数中的数据参数未初始化。如果您使用chrome或firefox检查页面,您可能会看到javascript错误。

基本上,jquery的post函数中的data参数接受序列化表单查询字符串或JSON字符串/对象。

另外,请检查api:http://api.jquery.com/jquery.post/

尝试以下修改后的代码:

function send_message(value){
    var data={txt:value};
      jQuery.post(ajaxurl, data, function(response) {
        alert(response);
      });
    }

答案 1 :(得分:0)

function send_message(value){

    if(!value){
        alert('value is empty');
    } 

    if(!data){
        alert('data is empty');
    }

    data.txt=value;

    jQuery.post(ajaxurl, data, function(response) {
       alert(response);
    });
}

如果你检查你的控制台,你可能得到了txt没有定义你错过了他们周围的''。通常对已知对象键使用.dot表示法,如果您相信良好练习,则将[]保存为动态键。

你还没有提到你正在使用什么浏览器...我不能发誓这是最新的但是firefox使用event.which而不是keycode ...所以:

 onkeydown="var code= event.which || event.keyCode; if (code == 13) {send_message(this.value);}"

修改

此实例的解决方案。

您在钩子'enqueue_scripts'上排队了js文件,它应该是'admin_enqueue_scripts'并且还指定它需要jQuery。

add_action( 'admin_enqueue_scripts', 'load_chat_me_styles' ); //-->note changed hook!

我还更新了js文件以允许控制台日志和php文件以获得更好的反馈。

Jsfile - 另存为新文件名以排除缓存 http://pastebin.com/NyqGqhG0

Phpfile - 记下任何笔记...... http://pastebin.com/N7LQg0Zi