Javascript PHP没有捕获AJAX变量
非常感谢大家的帮助!我已经开始明白我哪里出了错。愚蠢的我将数据作为数组而不是元素ID的单个字符串发送。 在过去的几天里,我一直在研究堆栈溢出和其他来源,试图找到这个问题的答案。在这个问题上我有很多想法,但没有一个解决方案对我有效。我相信这是非常明显的 为了可读性和极简主义,我排除了很多代码。我正在处理的项目应该是打开一个模式窗口并从数据库加载内容 我的问题是PHP在我的一生中都不会选择这个变量。从字面上看,除了这个变量外,其他一切都正常工作。我的代码提取div id并在php文件中匹配它。或者应该是这样。当我尝试回显变量或$\u POST时,什么也没有出现。我也尝试过使用isset进行测试——结果总是否定的 我试过GET,POST——这两种方法似乎都不适合我 任何想法都将不胜感激Javascript PHP没有捕获AJAX变量,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,非常感谢大家的帮助!我已经开始明白我哪里出了错。愚蠢的我将数据作为数组而不是元素ID的单个字符串发送。 在过去的几天里,我一直在研究堆栈溢出和其他来源,试图找到这个问题的答案。在这个问题上我有很多想法,但没有一个解决方案对我有效。我相信这是非常明显的 为了可读性和极简主义,我排除了很多代码。我正在处理的项目应该是打开一个模式窗口并从数据库加载内容 我的问题是PHP在我的一生中都不会选择这个变量。从字面上看,除了这个变量外,其他一切都正常工作。我的代码提取div id并在php文件中匹配它。或者应
<div id="despair" class="cartoon" onclick="openEp(this.id)">
<p>content here</p>
</div>
<div id="friday" class="cartoon" onclick="openEp(this.id)">
<p>different content here</p>
</div>
<script>
function openEp(clikId) {
episode_name = clikId;
$.ajax({
type: 'POST',
url: 'cartoons.php',
data: ({episode_name: episode_name}),
success: function(data) {
console.log('sent ' + episode_name);
}
});
}
</script>
满足于此
这里有不同的内容
函数openEp(clikId){
插曲名称=clikId;
$.ajax({
键入:“POST”,
url:'cartons.php',
数据:({插曲名称:插曲名称}),
成功:功能(数据){
console.log('sent'+插曲名称);
}
});
}
还有我的cartons.php文件
<?php include 'connect.php';
$conn = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$episode_name = $_POST["episode_name"];
echo $_POST['episode_name'];
?>
这是您的成功功能: 您正在忽略
数据
如果要输出响应,则需要编写相应的代码,例如:
success: function(data) {
console.log(data);
}
试试这个。我得到了回应html文件
<div id="despair" class="cartoon" onclick="openEp(this.id)">
<p>content here</p>
</div>
<div id="friday" class="cartoon" onclick="openEp(this.id)">
<p>different content here</p>
</div>
function openEp(clikId) {
episode_name = clikId;
$.ajax({
type: 'POST',
url: 'cartoons.php',
data: ({episode_name: episode_name}),
success: function(data) {
console.log('sent ' + episode_name);
}
});
}
满足于此
这里有不同的内容
函数openEp(clikId){
插曲名称=clikId;
$.ajax({
键入:“POST”,
url:'cartons.php',
数据:({插曲名称:插曲名称}),
成功:功能(数据){
console.log('sent'+插曲名称);
}
});
}
connect.php
<?php
error_reporting(E_ALL);
const DB_HOST = "localhost";
const DB_USERNAME = 'root';
const DB_PASSWORD = '';
const DB_DATABASE = '#dbname';
<?php
include 'connect.php';
$conn = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
// Check connection
if (mysqli_connect_errno()) {
// echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else {
// echo "connected";
}
$episode_name = $_POST["episode_name"];
echo $_POST['episode_name'];
好的,试试这个方法也许这就是我使用Ajax的方式:
<div id="despair" class="cartoon" onclick="openEp(this.id)">
<p>content here</p>
</div>
<div id="friday" class="cartoon" onclick="openEp(this.id)">
<p>different content here</p>
</div>
<script>
function openEp(clikId) {
$.ajax({
type: 'POST',
url: 'cartoons.php',
data: {episode_name: clikId}, // I did some change
dataType : "JSON", // I add this
// Now your success with some modification
success: function(response) {
console.log(response.data)
}
});
}
</script>
满足于此
这里有不同的内容
函数openEp(clikId){
$.ajax({
键入:“POST”,
url:'cartons.php',
数据:{插曲名称:clikId},//我做了一些改变
数据类型:“JSON”,//我添加了这个
//现在,您的成功与一些修改
成功:功能(响应){
console.log(response.data)
}
});
}
您的PHP:
<?php include 'connect.php';
$conn = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
// You create an array you will use as result
$result = array();
// I add your data in the result array, the same way you can create $result['message'] and send back a success message or what you want
$result['data'] = $_POST["episode_name"];
// You send your array in JSON format as you wrote in your Ajax call
echo json_encode($result);
?>
它使用JSON格式吗?尝试使用数据:{section\u name:section\u name},
而不使用()@HamzaAbdaoui-为什么会有不同?使用浏览器的“网络”选项卡,您应该调试问题是在JS还是PHP部分,而我怀疑是第一个问题option@deceze-我们可以看到代码。jQuery-ajax,当传递这样一个简单的对象时,将对其进行编码。重复@Nico所说的:打开浏览器的开发工具的网络检查器,查看实际的HTTP请求和响应。这是接近问题的最直接的方法。谢谢!通过输出我的数据,我意识到我发送的不是我想要的东西。但是,我的PHP文件仍然说$\u POST是空的。我的PHP文件是否也有问题?具体取决于您发布的内容“尝试”什么?你们改变了什么?你们在当地面临问题吗?检查数据库连接?在connect.php顶部添加错误报告(E_ALL)。然后你会看到警告和注意错误,为什么人们拒绝投票,却没有解释原因?
<?php include 'connect.php';
$conn = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
// You create an array you will use as result
$result = array();
// I add your data in the result array, the same way you can create $result['message'] and send back a success message or what you want
$result['data'] = $_POST["episode_name"];
// You send your array in JSON format as you wrote in your Ajax call
echo json_encode($result);
?>