我研究了这个问题(我读了很多StackOverflow问题),但我仍然无法找到解决方案。
当我点击链接然后我需要将它发送到将执行数据库查询的php文件时,我使用jQuery获取id HTML'a'属性值。我尝试使用$.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}
});
});
});
当我在$_POST['idElement']
文件中使用showElement.php
时,我得到以下内容:
Notice: Undefined index: idElement in C:\xampp\htdocs\path\to\showElement.php on line 28
我做错了什么?
编辑:我用Firebug对此进行了测试,它表示没问题。 Firebug Console中显示的数据显示正确,但PHP文件未显示在浏览器中(var_dump返回它应具有的值)。
对此有何想法?
答案 0 :(得分:0)
更改此
$.post("showElement.php", idElement).done(function (){
alert("All went good");
});
这个
$.post("showElement.php", {'idElement': idElement}).done(function (){
alert("All went good");
});
您忘了在数据中添加密钥'参数。而且我认为只有当你使用$ .post时才会看到这个,因为$ .ajax是正确的。评论$ .ajax一个并尝试我建议你或评论$ .post一个并尝试$ .ajax。
这里有一个例子 http://www.tutorialspoint.com/jquery/ajax-jquery-post.htm
PS:对不起,我还不能回答。
答案 1 :(得分:0)
POST
方法可以像
$.post("showElement.php",
{idElement: idElement},
function (result) {
alert("All went good");
});
答案 2 :(得分:0)
我不认为你做错了什么。而不是尝试使用某些key
来获取数据,
尝试var_dump($_POST)
查看您是否正在获取任何POST
数据
注意:强>
尝试在datatype
请求中设置ajax
编辑:包含您请求中的contentType
。检查下面
$.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}
});
我认为设置contentType
应该有效。
答案 3 :(得分:0)
好吧,正如我在评论中所说,我遇到了一个不使用JavaScript的解决方案。
我正在与Twig合作制作模板,而我所做的就是忘记jQuery,并在$_GET
中使用$_POST
而不是showElement.php
,因为我是' m不发送敏感数据(密码或用户名),我只是附加
?idElement=anyElementId
到showElement.php的路径,例如获取以下URI:
http://localhost/Project/showElement.php?idElement=1
在我的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
在我的Twig模板(showElement.twig)
中<!-- Link to be clicked -->
<a id="{{element.getId}}" class="linkElement" href="./../Project/showElement.php?idElement={{element.getId}}">{{element.getTitle}}</a>
这只是一个解决方案。我不知道这是不是一个很好的方法,但它确实有效。 我想我可以直接在数组中保存对象,避免使用$ _SESSION变量,但是,我做了它,以防我需要在其他PHP文件中使用检索到的元素。
如果有人为此找到了另一种解决方案,可以在此处发布。
感谢大家的帮助:)
编辑链接到帮助我的帖子:Ajax send the data, but php doesn't recieve(标题描述了我用Firebug解释的内容:P)