Javascript 从jQuery向PHP文件发送数据时未定义索引
我已经研究过这个问题(我读过很多StackOverflow问题),但我仍然无法找到解决方案 当我单击链接时,我通过jQuery获得id HTML'a'属性值,然后我需要将其发送到一个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
$.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>