如何使用PHP以纯文本响应Ajax请求



我必须得到一个用JavaScript询问的响应,并用PHP(Yii2 Framework)进行响应。我得到了回应:是HTML代码,但我需要自己的数据。

我的JavaScript文件:

$.ajax({
type: 'GET',
url: 'http://localhost:8080/',
})
.done(function(data) {
console.log('Results from PHP: ' + data); // Problem here
})
.fail(function() {
alert("Error ");
});

我的PHP文件:

<?php    
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
echo('My favourite color is red'); 
?>

浏览器控制台的响应(我只需要"我最喜欢的颜色是红色"):

Results from PHP: <!DOCTYPE html>
<html lang="en-US" class="h-100">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title></title>
<meta name="csrf-param" content="_csrf">
<meta name="csrf-token" content="C5Npvp5xY_LuMz_iLyH9DTB9_BtyAUbuJc2HRlyIfq579wjnzTkGgqt2RdBYFsx-BjGwYzdMLZZti75_CLof8Q==">
<link href="/assets/b6930980/css/bootstrap.css" rel="stylesheet">
<link href="/css/site.css" rel="stylesheet"></head>
<body class="d-flex flex-column h-100">
<header>
<nav id="w0" class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand" href="/index.php">My Application</a>
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#w0-collapse" aria-controls="w0-collapse" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<div id="w0-collapse" class="collapse navbar-collapse">
<ul id="w1" class="navbar-nav nav"><li class="nav-item"><a class="nav-link active" href="/index.php?r=site%2Findex">Home</a></li>
<li class="nav-item"><a class="nav-link" href="/index.php?r=site%2Fabout">About</a></li>
<li class="nav-item"><a class="nav-link" href="/index.php?r=site%2Fcontact">Contact</a></li>
<li class="nav-item"><a class="nav-link" href="/index.php?r=site%2Flogin">Login</a></li></ul></div>
</div>
</nav></header>
<main role="main" class="flex-shrink-0">
<div class="container">

My favourite color is red
</div>
</main>

也许还有另一种方式可以响应,而不是使用echo

HTML响应不是来自指定的PHP文件。它很可能是由框架的布局文件(包装视图或模板文件的文件)添加的。要删除它,您可以编写代码来指定您不想要/需要布局,或者清空布局文件。

我不知道这个框架的确切情况,但许多框架都包括检测请求是否是Ajax的选项,如果是,则指定不同的布局(或没有布局)

为什么使用php文件而不是Yii控制器?你的行动可能是这样的:

public function actionTest()
{
Yii::$app->response->headers->set('Access-Control-Allow-Origin', '*');
Yii::$app->response->headers->set('Access-Control-Allow-Methods', '*');
return "Test";
}

最新更新