一般问题:
我想使用jQuery中的ajax函数将div元素的id传递给php。整个代码在一个文件中,因此ajax函数应该将id传递给同一个文件。
我做了什么:
1.我取了点击元素的id(#iamaid)并保存了它
2.我尝试使用jQuery的ajax函数将它发送到同一文件中的php代码
我尝试用post方法回应它。
发生了什么:
开发人员控制台给了我一个输出,并说数据已经成功发送,但是php说它还没有发送,并说这是一个未定义的索引。
我还使用了jQuery中的两个不同的ajax函数来传递代码,但两者似乎都没有用。
这是我的完整代码(它在一个文件中):
<html>
<head>
<title>Check POST/GET-Method to same file</title>
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
</head>
<body>
<h1>Page to check the POST/GET-Method to same file</h1>
<div id="iamaid">Click me</div>
<h1>The output</h1>
<?php
if (isset($_POST["id"])) {
echo "<p>The id is: " . $_POST["id"] . "</p>";
}
else {
echo "<p>No id found, edit code</p>";
};
?>
</body>
<script type="text/javascript">
// try it with post function
$("#iamaid").on("click", function() {
var the_id = $(this).attr("id");
$.post("", {id:the_id})
});
// try it with ajax function
$("#iamaid").on("click", function() {
var the_ajax = $(this).attr("id");
$.ajax({
url:"",
method: "POST",
data: {id:the_ajax}
});
});
</script>
<style>
body {
font-family:Verdana;
}
#iamaid {
width:100px;
height:50px;
background:black;
color:white;
}
#iamaid:hover {
cursor:pointer;
}
</style>
</html>
如果需要更多信息而不是随意评论,我将为您提供帮助我所需的所有信息。
我在互联网上看了几个小时,但我找不到任何解决办法 请帮帮我。
修改
我给自己一个答案。这是对PHP如何工作的一般误解。
将带有ajax的id传递给同一个文件会产生相同的输出,因为该文件会再次被调用。
解决方案非常简单:
只需将输出代码或php代码放入另一个文件中,然后将带有ajax调用的id传递给该文件,然后将所需的html代码回显,然后将其粘贴到容器中
这是我的意思的一个例子:
带有脚本的HTML代码
<html>
<head>
<title>Check POST/GET-Method to same file</title>
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
</head>
<body>
<h1>Page to check the POST/GET-Method to same file</h1>
<div id="iamaid">Click me</div>
<h1>The output</h1>
<p id="output"></p>
</body>
<script type="text/javascript">
/* the id gets posted to the php file
the php file echos one line and the
echo output gets pasted into the #output container
this also works when you echo html code you just need
one main container to paste it in
*/
$("#iamaid").on("click", function() {
$.post("output.php", {id:$(this).attr("id")}, function(output) {
$("#output").html(output);
});
});
</script>
<style>
body {
font-family:Verdana;
}
#iamaid {
width:100px;
height:50px;
background:black;
color:white;
}
#iamaid:hover {
cursor:pointer;
}
</style>
</html>
PHP CODE(output.php)
<?php
echo "The id is: " . $_POST["id"];
?>
正如您所看到的,将PHP代码移动到另一个文件使其更加简单,您不需要再次加载整个页面,因为输出容器是唯一获取新内容的对象。
我希望它帮助一些陷入ajax和问题的人使用相同的页面而不是改变它。
答案 0 :(得分:0)
这将解决您的问题 $ .post(&#34;&#34;,{&#34; id&#34;:&#34; the_id&#34;})
答案 1 :(得分:0)
根据.post()
的{{3}},如果您想发送数据有效负载,那么您应该使用promises。在您的情况下,您可以使用.done()
承诺来处理回复,但如果您对处理错误感兴趣,则应该查看.always()
和.fail()
。
$.post(
"output.php",
{ id: $(this).attr("id") }
).done(function( data ) {
$("#output").html(output);
});
编辑:我想我应该注意时间戳。这个问题很陈旧。