将ajax重新发送到一个返回" undefined"的php文件

时间:2018-05-05 11:06:58

标签: javascript php jquery ajax

我看到我不是唯一一个遇到这种问题的人,但我找不到解决办法。

所以问题来自一个比这复杂得多的应用程序,但试图解决这个问题,我意识到即使是一个简单的#Ajax" 2或3个文件之间的请求会返回我" undefined"。

以下是我的文件:

的index.php

<body>
  <button>Button</button>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="./main.js"></script>
</body>

main.js

$(document).ready(function()
{
  $('button').click(function(){
    $.post('test.php', function(data, status){
      console.log('data: ' + data, status);
    });
  });
});

test.php的

<?php
  echo "lorem ipsum";
?>

当我点击按钮时,Ajax请求会在控制台中返回:

data: undefined success

当我的文件是index.php文件时,它总是返回&#34; undefined&#34;无论上下文(当然如果没有Javascript错误)。 但通过多次测试,我意识到使用相同内容的不同结果,但使用其他文件扩展名,返回值并不总是相同,例如:

index.html而不是index.php,相同的main.js和相同的test.php

data:  success

index.html而不是index.php,如果我调用一个包含例如&#34; lorem ipsum&#34;的test.txt文件。它返回:

data: lorem ipsum success

这是我的问题,请提前感谢您的答案。

4 个答案:

答案 0 :(得分:0)

好吧,我认为你必须发送json而不是像这样的回声:

return json_encode('lorem ipsum');

尝试这个我希望它有所帮助。

答案 1 :(得分:0)

将此代码放入test.php文件

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Demo</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<button>Button</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function()
{
  $('button').click(function(){
    $.post('abc.php', function(data, status){
      console.log('data: ' + data, status);
    });
  });
});
</script>
</body>
</html>

你的abc.php文件中的

只是放了这个并检查并将test.php和abc.php放在同一个文件夹中,或者如果abc.php在另一个位置,只需更改$ .post中的abc.php的URL

<?php echo "hello"; ?>

答案 2 :(得分:0)

这里试试这个:

$(document).ready(function() {
  $("#button").click(function() {
    $.ajax({
      url: "test.php",
      success: function(result) {
        $("#div").html(result);
      } 
    });
  });
});

然后是php代码:

$array = array("" => "lorem", "" => " ipsum");
echo json_encoded($array);

答案 3 :(得分:0)

我发现问题,它来自我的工作环境,我使用了这个插件https://github.com/JosephLenton/PHP-Error并禁用它一切正常工作^^'

现在我必须弄清楚如何在制作Ajax请求xD

时保持激活状态

谢谢大家的帮助,抱歉浪费你的时间。 :/