Can';t从Ajax获取HTML或将响应追加到DIV-JQuery
我试图从控制器获得一个简单的响应,并将其附加到Can';t从Ajax获取HTML或将响应追加到DIV-JQuery,jquery,html,ajax,Jquery,Html,Ajax,我试图从控制器获得一个简单的响应,并将其附加到div中,以便在前端看到输出。以下是我的JQuery: $('.js-mapsearch').keyup(function (e) { var characters = $(this); var $output = $('.js-output'); console.log(characters.val() + ' was pressed'); $.
div
中,以便在前端看到输出。以下是我的JQuery:
$('.js-mapsearch').keyup(function (e) {
var characters = $(this);
var $output = $('.js-output');
console.log(characters.val() + ' was pressed');
$.ajax({
type: "POST",
url: '/umbraco/surface/MapSearchSurface/GetPlaces?Characters=' + characters,
datatype: 'html',
contentType: 'application/text',
success: function (data) {
if (data) {
$output.append($(data).html());
console.log($(data).html());
console.log(data);
}
},
error: function (ex) {
console.log(ex);
}
});
e.preventDefault();
});
以下是控制台日志:
console.log($(data).html()); // [object Object]
console.log(data); // <div class="js-places-container">[object Object]</div>
这是我的控制器代码:
@model Prodo.umbraco.Web.Models.GetPlacesModel
<div class="js-places-container">@Model.Places</div>
public ActionResult GetPlaces(string Characters)
{
var Model = new GetPlacesModel();
Model.Places = Characters;
return PartialView("~/Views/Partials/_MapSearchResults.cshtml", Model);
}
public class GetPlacesModel
{
public string Places { get; set; }
}
和型号
代码:
@model Prodo.umbraco.Web.Models.GetPlacesModel
<div class="js-places-container">@Model.Places</div>
public ActionResult GetPlaces(string Characters)
{
var Model = new GetPlacesModel();
Model.Places = Characters;
return PartialView("~/Views/Partials/_MapSearchResults.cshtml", Model);
}
public class GetPlacesModel
{
public string Places { get; set; }
}
理论上,我现在应该能够通过$('.js output')
div
在前端看到输入的字符。有人能帮忙吗。好吧,你的代码正按照你告诉它的方式工作,你只是在javascript中输入字符串[object object]
这会将其设置为对象
var characters = $(this);
当你使用它的时候
url: '/umbraco/surface/MapSearchSurface/GetPlaces?Characters=' + characters
它调用字符
对象的默认.toString()
方法
您实际要做的是如下设置:
var characters = $(this).val();
或者类似的东西来获取您想要传递的字符串值。好吧,您的代码正按照您告诉它的方式工作,您只是在javascript中传递字符串[object object]
这会将其设置为对象
var characters = $(this);
当你使用它的时候
url: '/umbraco/surface/MapSearchSurface/GetPlaces?Characters=' + characters
它调用字符
对象的默认.toString()
方法
您实际要做的是如下设置:
var characters = $(this).val();
或类似的内容,以获取要传递的字符串值。您可以尝试以下方法:
$.get('your/url/template.html').done(function (data) {
$('#your_div').append(data);
});
您可以尝试以下方法:
$.get('your/url/template.html').done(function (data) {
$('#your_div').append(data);
});
太棒了,现在说得通了。然而,我现在正在将每个字符输入日志,但遗憾的是,我似乎仍然无法获得追加的元素$('.js output')
(''+$(data.html()+'')代码>显示在前端。这听起来像是一个单独的问题,我们还需要查看您的html以了解为什么可能没有显示。谢谢Matti,html代码中的问题是类名不正确,所以一切都很好。我现在把这个标记为一个答案。太棒了,现在说得通了。然而,我现在正在将每个字符输入日志,但遗憾的是,我似乎仍然无法获得追加的元素$('.js output')
(''+$(data.html()+'')代码>显示在前端。这听起来像是一个单独的问题,我们还需要查看您的html以了解为什么可能没有显示。谢谢Matti,html代码中的问题是类名不正确,所以一切都很好。我现在把这个标记为答案。