悠悠楠杉
ThinkPHP中使用ajax接收json数据的方法
1. 前端 - 使用Ajax发送数据
首先,在前端页面中,你需要编写JavaScript代码来发送一个Ajax请求,该请求携带标题、关键词、描述等数据,并指定返回的数据格式为JSON。
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
$("#submitBtn").click(function() {
var title = $("#title").val();
var keywords = $("#keywords").val();
var description = $("#description").val();
var content = $("#content").val(); // 假设这里是正文内容,大约1000字
$.ajax({
type: "POST",
url: "/your-controller/generateArticle", // 你的控制器路径和方法名
data: {title: title, keywords: keywords, description: description, content: content},
dataType: "json",
success: function(response) {
console.log(response); // 打印生成的Markdown格式文章
$("#markdownOutput").text(response.markdown); // 显示Markdown格式的文章在页面上
},
error: function(error) {
console.error("Error:", error);
}
});
});
});
</script>
</head>
<body>
<input type="text" id="title" placeholder="Title">
<input type="text" id="keywords" placeholder="Keywords">
<input type="text" id="description" placeholder="Description">
<textarea id="content" placeholder="Content (approx. 1000 words)"></textarea>
<button id="submitBtn">Submit</button>
<pre id="markdownOutput"></pre> <!-- 显示Markdown文章的地方 -->
</body>
</html>
这段代码通过jQuery的Ajax方法向服务器发送了包含标题、关键词、描述和正文的内容。注意替换/your-controller/generateArticle
为你的实际控制器路径和方法名。
2. 后端 - ThinkPHP控制器处理逻辑
在ThinkPHP的控制器中,你需要编写逻辑来接收这些数据,并生成Markdown格式的文章。下面是一个简单的示例:
php
namespace app\controller; // 根据你的命名空间调整路径
use think\Controller; // 引入控制器基类
use phpQuery; // 引入phpQuery库来处理Markdown(需要先通过composer安装)
class ArticleController extends Controller {
public function generateArticle() {
$title = $this->request->post('title'); // 获取标题等数据
$keywords = $this->request->post('keywords');
$description = $this->request->post('description');
$content = $this->request->post('content'); // 正文内容,大约1000字左右的内容
$pq = phpQuery::newDocumentHTML(''); // 初始化phpQuery对象用于处理Markdown内容
$markdownContent = "# " . $title . "\n"; // 生成Markdown的标题部分
$markdownContent .= "## Keywords\n";
$markdownContent .= "- " . $keywords . "\n"; // 生成Markdown的关键词部分
$markdownContent .= "### Description\n";
$markdownContent .= $description . "\n"; // 生成Markdown的描述部分
$markdownContent .= "\n" . $content; // 加入正文内容
return json(['markdown' => $markdownContent]); // 将生成的Markdown内容返回给前端
}
}