Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JQuery将id传递给php_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 使用JQuery将id传递给php

Javascript 使用JQuery将id传递给php,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,一般问题: 我想使用jQuery中的ajax函数将div元素的id传递给php。整个代码都在一个文件中,因此ajax函数应该将id传递给同一个文件 我所做的: 1.我获取单击元素的id并保存它 2.我尝试使用jQuery中的ajax函数将其发送到同一文件中的php代码 3.我试着用post方法来回应它 发生了什么事 开发者控制台给了我一个输出,说数据已经成功发送,但是php说数据还没有发送,说它是一个未定义的索引 我还使用了jQuery中的两个不同的ajax函数来传递代码,但这两个函数似乎都不起

一般问题: 我想使用jQuery中的ajax函数将div元素的id传递给php。整个代码都在一个文件中,因此ajax函数应该将id传递给同一个文件

我所做的: 1.我获取单击元素的id并保存它 2.我尝试使用jQuery中的ajax函数将其发送到同一文件中的php代码 3.我试着用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代码

PHP代码输出.PHP

正如您所看到的,将php代码移动到另一个文件会使它变得更加简单,并且您不需要再次加载整个页面,因为输出容器是获取新内容的唯一对象

我希望它能帮助那些被ajax和这个问题困扰的人使用同一个页面而不改变它。

这会解决你的问题 $.post,{id:the_id}

根据for.post,如果要发送数据有效负载,那么应该使用承诺。在您的情况下,您可以使用.done承诺来处理响应,但是如果您对处理错误感兴趣,您也应该研究.always和.fail

$.post(
    "output.php",
    { id: $(this).attr("id") }
).done(function( data ) {
    $("#output").html(output);
});

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

在$中。请在url中输入我们的页面名称。这也是$.post,{'id':the_id}这个解决方案在开发人员控制台中给了我一个错误的发送字符串。它发送的是_id而不是iamaid。我有一种感觉,jQuery代码是正确的,但php代码甚至服务器似乎有问题。
<?php
    echo "The id is: " . $_POST["id"];
?>
$.post(
    "output.php",
    { id: $(this).attr("id") }
).done(function( data ) {
    $("#output").html(output);
});