我试图让.load
方法发布到页面,然后回显发布的内容以查看它是否有效,但我无法让它工作。我告诉我该变量未定义,这就是我所拥有的:
教师.php:
<?php
echo $POST['class'];
JS:
$('#test').load('teacher.php', {class: 'test'});
一旦点击某些东西就会触发。
#test
是<div>
我希望将数据发布到的。
谢谢您的帮助。
它$_POST
不是$POST
. 不知道这是否是一个错字,但这也会产生一些问题。
大多数时候,像这样的问题是由于AJAX的异步性造成的。.post()
除非请求-响应的 AJAX 往返行程已经完成,否则您通过 AJAX(带有、.load()
、.ajax()
、 )加载的所有内容.get()
都不“存在”。
请务必在回调函数中“使用”您通过 AJAX 加载的内容(HTML 位、JSON 响应……),该回调函数在 AJAX 请求成功时调用。
例如,假设我的页面ajax.php
返回此字符串:<div id='ajaxdiv'>hello!</div>
,我们想将这个(HTML)字符串加载到#mydiv
:
$("#mydiv").load("ajax.php");
console.log($("#mydiv #ajaxdiv")); <- undefined
它不起作用,因为无论请求是否完成,代码都会继续。反而:
$("#mydiv").load("ajax.php", function () { console.log($("#mydiv #ajaxdiv"));});
之所以有效,是因为 JQuery 确保仅在请求完成时才使用回调函数。(您也可以添加类似 your 的参数{class: test}
,只需将它们放在 URL 和回调函数之间)。
编辑:使用 $_POST 而不是 $POST。
如果您只是尝试在单击具有 id 的test
内容时将信息从 jQuery 发布到 PHP 文件,请执行以下操作:
教师.php:
<?php
echo $_POST['class'];
?>
JS:
$('#test').click(function() {
$.post('teacher.php', {class: 'test'},
function(output) {
//output = what is echoed from the php file.
alert(output);
);
});