jQuery函数使用GET从数据库接收字符串,之后我想将该字符串注入HTML而不是div。看起来非常标准的东西。 但是我不是很管理它。
以下是我的观点:
<h1>Whatever</h1>
<div id="replace_me">
</div>
<a id="click_me" href="#">Click Me</a>
<script>
//AJAX
var brand_id = 8
var dataX = {'brand': brand_id, 'csrfmiddlewaretoken': ""};
$(function(){
$("#click_me").click(function(){
$.ajax({
type: 'GET',
url: '/ajax_request/',
data: dataX,
datatype: "json",
success: function(data) {
alert(data);
$("#replace_me").load(data);
},
error: function() {
alert("Nope...");
}
});
});
});
</script>
当警报设置完毕后,我会收到我的字符串,显示一切正常,但是如何输入我刚收到的字符串“replace_me”,而不必从另一个网址加载?
答案 0 :(得分:6)
您的success
功能出错。检查jQuery load()
的文档。相反,你应该做
success: function(data) {
//alert(data);
$("#replace_me").html(data);
},
或者,稍微好一点的风格
success: function(data) {
//alert(data);
$("#replace_me").empty().append($(data));
},
另请注意,您在数据类型选项中指定了“json”。因此,如果您的服务器以适当的JSON响应,则您的data
将是一个JavaScript对象,因为jQuery将为您解析JSON格式。如果你真的想看到这个物体,你将需要使用,例如JSON.stringify()
:
$("#replace_me").empty().append($(JSON.stringify(data)));
如果您的服务器没有生成有效的JSON,则在大多数情况下不会调用success
方法。
答案 1 :(得分:1)
load()是一种方便的方法,用于执行调用ajax url的两个步骤,然后将数据全部放入单个函数中。而不是调用.ajax(),只需调用.load()
即
var brand_id = 8
var data = {'brand': brand_id, 'csrfmiddlewaretoken': ""};
$("#replace_me").load('/ajax_request/', data);