Javascript 如何选择ajax响应的部分并将其放入现有html元素中
我试图创建一个页面,在第一个实例中,页面只显示一次来自DB的动态内容,而没有任何Ajax。如果用户单击一个链接,我希望运行一个Ajax请求,从数据库中检索标题、条目日期和内容,并替换页面不同部分中的现有内容。我不想在PHP while循环中重复整个页面,因为Jquery事件处理程序已用于未刷新的内容 我的想法是在文档加载时使用一个值为0的javascript变量,通过Ajax发送并在PHP中检查其值。如果值为0,我将使用数据库中的最新更新设置标题、日期和内容的值,否则我将根据链接的内容进行设置。 我想知道Ajax是否可以简化我的工作 我的Javascript代码Javascript 如何选择ajax响应的部分并将其放入现有html元素中,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我试图创建一个页面,在第一个实例中,页面只显示一次来自DB的动态内容,而没有任何Ajax。如果用户单击一个链接,我希望运行一个Ajax请求,从数据库中检索标题、条目日期和内容,并替换页面不同部分中的现有内容。我不想在PHP while循环中重复整个页面,因为Jquery事件处理程序已用于未刷新的内容 我的想法是在文档加载时使用一个值为0的javascript变量,通过Ajax发送并在PHP中检查其值。如果值为0,我将使用数据库中的最新更新设置标题、日期和内容的值,否则我将根据链接的内容进行设置。
var statusOfClick =0;
var url = "post_this.php";
$.ajax({ //initial request once the document loads
url: url,
type: "POST",
data: "statusOfClick="+statusOfClick,
cache: false,
processData: false,
contentType: false
});
//change the source once the link is clicked
$("#blog-list ").on("click", "li", function(){
var getBlogByName = $(this).text();
var url = "post_this.php";
$.ajax({
url: url,
type: "POST",
data: "getBlogByName="+getBlogByName,
cache: false,
processData: false,
contentType: false,
success: function(){
/*how do I show parts of this response in different existing
html elements?*/
}
});
});
您可以使用此代码。使用
json\u Encode
函数在PHP文件中对响应进行编码。在JS中,您可以通过使用$.parseJSON
函数将这些值解析为JSON来检索这些值。在各自的HTML元素中设置日期、标题和内容的值。这只是一个例子,请根据您的要求进行更改 欢迎@FhNdiritu请在答案上标记已批准,因为它已解决您的主要问题。谢谢。:)在处理您的答案时,我遇到了以下错误:Uncaught SyntaxError:Function.parse[as parseJSON]()位置24处JSON中的意外标记h。我该如何处理这个问题?问题似乎在JSON反馈中,如果我尝试对整个结果发出警报,它会起作用,但解析不起作用。请从代码中删除缓存、processData和数据类型,您不需要这些。抱歉,我的代码出错。您需要使用d来获取值。请参阅我的最新答案@弗恩德里图已经做出了改变,但问题仍未解决。我的PHP代码运行正常,JSON如何处理转义字符?似乎这就是问题所在。
//change the source once the link is clicked
$("#blog-list ").on("click", "li", function(){clicked
var getBlogByName = $(this).text();
var url = "post_this.php";
$.ajax({
url: url,
type: "POST",
data: "getBlogByName="+getBlogByName,
success: function(response){
var d = $.parseJSON(response);
$("#title").html(d.title);
$("#date").val(d.date);
$("#content").html(d.content);
}
});