Javascript 从jQuery向PHP文件发送数据时未定义索引

Javascript 从jQuery向PHP文件发送数据时未定义索引,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我已经研究过这个问题(我读过很多StackOverflow问题),但我仍然无法找到解决方案 当我单击链接时,我通过jQuery获得id HTML'a'属性值,然后我需要将其发送到一个php文件,该文件将执行数据库查询。我尝试使用$.ajax和$.postjQuery函数,得到了相同的错误 使用$。post var idElement; $(document).ready(function(){ $('.linkElement').click(function(){ idEleme

我已经研究过这个问题(我读过很多StackOverflow问题),但我仍然无法找到解决方案

当我单击链接时,我通过jQuery获得id HTML'a'属性值,然后我需要将其发送到一个php文件,该文件将执行数据库查询。我尝试使用
$.ajax
$.post
jQuery函数,得到了相同的错误

使用
$。post

var idElement;
$(document).ready(function(){
  $('.linkElement').click(function(){
      idElement= $(this).attr('id');
      console.log(idElement); // Shows id value on console
      $.post("showElement.php", idElement).done(function (){
         alert("All went good"); 
      });
      $(document.body).load("showElement.php");         
  });
});
使用
$.ajax

var idElement;
    $(document).ready(function(){
        $('.linkElement').click(function(){
          idElement= $(this).attr('id');
          console.log(idElement); // Shows id value on console
          $.post("showElement.php", idElement).done(function (){
             alert("All went good"); 
          });

            $.ajax({
              url: "showElement.php",  
              type: "POST",
              data: {'idElement':idElement}
            });

        });
});
当我在我的
showElement.php
文件中使用
$\u POST['ideElement']
时,我得到以下信息:

Notice: Undefined index: idElement in C:\xampp\htdocs\path\to\showElement.php on line 28
我做错了什么

编辑:我用Firebug测试了这个,它说没问题。Firebug控制台中显示的数据显示正确,但PHP文件并没有显示在浏览器中(var_dump返回它应该具有的值)

有什么想法吗?

改变这个

$.post(“showElement.php”,ideElement).done(函数(){
警惕(“一切顺利”);
});
为此

$.post(“showElement.php”,{'ideElement':ideElement}).done(函数(){
警惕(“一切顺利”);
});
您忘记在“data”参数中添加键。我认为只有在使用$.post时,您才会看到这一点,因为$.ajax是正确的。评论$.ajax并尝试我建议的方法,或者评论$.post并尝试$.ajax

这里有一个例子


PS:对不起,我还不能作为评论回答。

POST
方法可以像这样使用

$.post("showElement.php", 
{idElement: idElement},
 function (result) {
   alert("All went good"); 
});

我不认为你做错了什么。与其尝试使用一些
获取数据

尝试
var\u dump($\u POST)
以查看是否获得任何
POST
数据

注意: 尝试在您的
ajax
请求中设置
datatype

编辑:在请求中输入
内容类型
。检查下面

  $.ajax({
          url: "showElement.php",  
          type: "POST",
          contentType:"application/x-www-form-urlencoded",
          dataType: 'html', //or json whatever data that you return from server side
          data: {'idElement':idElement}
        });

我认为设置
内容类型应该可以用。

正如我在评论中所说,我遇到了一个不使用JavaScript的解决方案

我正在使用Twig作为模板,我所做的就是忘记了jQuery,而是在
showElement.php
中使用
$\u GET
而不是
$\u POST
,因为我没有发送敏感数据(密码或用户名),我只是添加了

?idElement=anyElementId
指向showElement.php的路径,例如,获取以下URI:

http://localhost/Project/showElement.php?idElement=1
在my showElement.php中:

$anElement= ElementQuery::create()->findPk($_GET['idElement']); // Retrieve and element with Propel
$_SESSION['element'] = $anElement; // Save the element in $_SESSION['element'] variable
要显示信息,请显示showElement.twig模板:

$twig->display("showElement.twig", array('element') => $_SESSION['element']); // Display Twig template and pass arguments in an array
在我的小树枝模板(showElement.Twig)中


这只是一个解决方案。我不知道这是否是一个好方法,但它是有效的。 我想我可以直接将对象保存在数组中,避免为此使用$\u SESSION变量,但我这样做是为了在其他PHP文件中使用检索到的元素

如果有人找到其他解决方案,可以在这里发布

谢谢大家的帮助:)


编辑链接到帮助我的线程:(标题描述了我用Firebug得出的结论:p)

而不是
方法:“POST”
,使用
键入:“POST”
,谢谢你的回复。我像你们说的那个样拥有它,在jQuery网站上搜索之后,我注意到它可能应该是“方法”而不是“类型”,所以我改变了它。如果将其保留为“type”,则不会显示showElement.php。有什么我应该知道的吗?在你的
showElement.php中
尝试回显
$\u POST['idElement']
php
代码编辑你的帖子谢谢Eric。我按照你的建议做了,但不幸的是,我还是犯了同样的错误。我不知道发生了什么。。。可能是我加载showElement.php文件的方式$(document.body).load(“verPregunta.php”);这应该通过另一种方式完成?您是如何访问php文件的?我想你是通过浏览器直接访问文件的。如果firebug报告这没问题,那就是我告诉你的意思。我尝试了你的代码,但这两个都没有打印文件返回的内容。因此,我认为,基本上您正在做的是,使用javascript代码运行您的文件,然后在两个不同的选项卡中浏览您的php文件(更清楚地说)。对吗?我的意图是在当前选项卡中打开.php文件。php文件执行数据库查询并显示数据(所有数据都在同一个文件中)。我找到了解决办法。我将发布它的答案部分shorty:)它返回数组(0){},我没有得到任何发布数据,当然。。。有什么想法或选择吗?你们有并没有检查控制台有并没有语法错误?您也尝试过设置数据类型吗?是的,我收到了一种警告:主线程上的同步XMLHttpRequest被弃用,因为它会对最终用户的体验产生有害影响。我研究了警告/错误,但仍然是一样的……好吧,那么您是否尝试在ajax请求中显式地添加“async:true”,正如其中一个解决方案中所给出的,可能是async参数设置为false,异步请求没有被发送是的,我这样做了。并且showElement.php文件根本不显示。。。如果我有什么发现,我会告诉你的。
<!-- Link to be clicked -->
    <a id="{{element.getId}}" class="linkElement" href="./../Project/showElement.php?idElement={{element.getId}}">{{element.getTitle}}</a>