请耐心等待;我已经和它斗争了好几天。
我的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代码背后的逻辑。
答案 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