首先,精确度:我正在使用MAMP和Brackets,以及Chrome进行测试。
这就是我所拥有的:
<ul>
<li class="brick" data-pseudo="one">Some text or elements</li>
<li class="brick" data-pseudo="two">Some text or elements</li>
<li class="brick" data-pseudo="three">Some text or elements</li>
</ul>
li.bricks只是矩形文章“链接”到Work1,Work2和Work3,并由数组中的PHP函数生成。 我试图获取被点击的.brick的“伪”数据将其放入PHP变量并使用它在另一个php函数中调用另一个数组,以生成Work1,Work2的HTML元素,... 我发现我必须使用AJAX并设法获得该代码:
var pseudo;
function sendPseudo(info){
$.ajax({
type: "POST",
url: "my_php_function_page.php",
ContentType: 'application/json',
data: {
'data_name': info
},
success: function (data) { //testing the success
alert(data);
},
error: function (errorThrown) {
alert('You are wrong !');
}
});
}
$('.brick').click(function(){
//some code
pseudo = $(this).data('pseudo');
sendPseudo(pseudo); //calling sendPseudo() function
});
这是我测试的PHP函数:
function loadWork(){
$workToLoad = $_POST['data_name'];
echo '<p>'.$workToLoad.'</p>';
}
...我正在调用我的HTML文档:
<section class="site">
<div class="left">
<?php loadWork() ?>
</div>
<div class="right">
//some other content
</div>
</section>
所以我有两个问题。首先,当点击.brick时,警报会弹出,但它是空的,绝对没有任何内容,但是当我在console.log中使用var伪时,我看到“一个”,“两个”......其次,回声在测试PHP函数时不会生成带伪的段落。
Pleeeaaase,帮我找出我做错了什么,这让我发疯了! 谢谢!
答案 0 :(得分:1)
我认为你的订单有些混乱。正如你所说,loadWork()是浏览器读取html文件时调用的html文件的一部分,它只被调用一次。如果还没有定义loadWork()(或者存在于另一个文件中,因为你的AJAX请求建议基于它调用my_php_function_page.php),那么它将不会输出任何内容。换句话说,当浏览器请求html时,loadWork()需要其post数据存在。
您可以将php放在与正在调用的html相同的文件中,但看起来您可能正在尝试将loadWork()的结果插入到已存在的div中。更改你的ajax函数,以便if(data!=“”)更改div的内部html以包含数据:
function sendPseudo(info){
$.ajax({
type: "POST",
url: "my_php_function_page.php",
ContentType: 'application/json',
data: {
'data_name': info
},
success: function (data) { //testing the success
alert(data);
$('.left').html(data);
},
error: function (errorThrown) {
alert('You are wrong !');
}
});
}
答案 1 :(得分:0)
我认为您错过了在my_php_function_page.php中调用函数loadWork(),此代码可能会修复您的空警报问题。
var pseudo;
function sendPseudo(info){
$.ajax({
type: "POST",
url: "my_php_function_page.php",
ContentType: 'application/json',
data: {
'data_name': info
},
data=data.trim(); // to remove the unwanted space around the string
success: function (data) { //testing the success
if(data!="")
{
alert(data);
$(".right").html(data); // This adds your AJAX success data to the class left inside your DIV
}
else
{
alert("You're wrong !");
}
},
});
}
<强> my_php_function_page.php 强>
function loadWork(){
$workToLoad = $_POST['data_name'];
echo '<p>'.$workToLoad.'</p>';
}
loadWork();
答案 2 :(得分:-1)
我不确定原因,但有时候数据功能不起作用,所以我总是在你的情况下使用attr(&#39; data-pseudo&#39;)。
所以它会是这样的:
pseudo = $(this).attr('data-pseudo');