PHP没有捕获AJAX变量

时间:2018-03-06 12:56:51

标签: javascript php jquery ajax

非常感谢你们的帮助!我已经开始弄明白我哪里出错了。愚蠢的我是将数据作为数组发送,而不是作为元素ID的单个字符串发送。

我过去几天在Stack Overflow&其他消息来源试图找到这个问题的答案。 SO在这个问题上有一个TON,但没有一个解决方案对我有用。我确信这是非常明显的事情。

为了便于阅读,我已经排除了很多代码。极简主义。我正在研究的项目应该打开一个模态窗口&从数据库加载内容。

我的问题是PHP不会在我的生命中获取变量。除了这个变量之外,其他所有东西都在工作。我的代码拉出div id并在php文件中匹配它。或者它应该是。当我尝试回显变量或$ _POST时,没有任何结果。我也尝试过使用isset进行测试 - 它总是出现负面影响。

我尝试过GET,POST - 这些似乎都不适合我。

任何想法都将不胜感激。

<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>

和我的cartoons.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'];

?>

3 个答案:

答案 0 :(得分:4)

这是你的成功功能:

success: function(data) {
  console.log('sent ' + episode_name);
}

您忽略了data

如果要输出响应,则需要编写代码来执行此操作,例如:

success: function(data) {
  console.log(data);
}

答案 1 :(得分:-2)

试试这个。我得到了回应。 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);
        }
    });
}

<强> connect.php

<?php
error_reporting(E_ALL);
const DB_HOST = "localhost";
const DB_USERNAME = 'root'; 
const DB_PASSWORD = '';
const DB_DATABASE = '#dbname';

<强> cartoons.php

<?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'];

答案 2 :(得分:-2)

好的,尝试这种方式也许这就是我使用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>

你的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格式?