使用JQuery将id传递给php

时间:2015-05-11 19:56:45

标签: javascript php jquery ajax

一般问题:
我想使用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和问题的人使用相同的页面而不是改变它。

2 个答案:

答案 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);
});

编辑:我想我应该注意时间戳。这个问题很陈旧。