尝试使用div
在id="result"
的返回数据中找到.ajax()
元素.find()
。很遗憾,alert(result)
不会返回div#result
。
这是我的代码:
$.ajax({
url: url,
cache: false,
success: function(response) {
result = $(response).find("#result");
alert(response); // works as expected (returns all html)
alert(result); // returns [object Object]
}
});
答案 0 :(得分:98)
要具体回答您的问题,它似乎正常工作。你说它返回[object Object]
,这是jQuery将使用find("#result")
方法返回的内容。它返回一个与find
查询匹配的jQuery元素。
尝试获取该对象的属性,例如result.attr("id")
- 它应该返回result
。
一般来说,这个答案取决于#result
是否是顶级元素。
如果#result
是顶级元素,
<!-- #result as top level element -->
<div id="result">
<span>Text</span>
</div>
<div id="other-top-level-element"></div>
find()
无效。相反,请使用filter()
:
var $result = $(response).filter('#result');
如果#result
不是顶级元素,
<!-- #result not as top level element -->
<div>
<div id="result">
<span>Text</span>
</div>
</div>
find()
将有效:
var $result = $(response).find('#result');
答案 1 :(得分:28)
我花了3个小时来解决类似的问题。这对我有用。
我尝试从$.get
响应中检索的元素是body标记的第一个子元素。出于某种原因,当我在这个元素周围包裹一个div时,它可以通过$(response).find('#nameofelement')
检索到。
不知道为什么,但是,可回收的元素不能成为身体的第一个孩子...这可能对某人有帮助:))
答案 2 :(得分:20)
试试这个:
result = $("#result", response);
btw alert
是一种粗略的调试方法,请尝试console.log
答案 3 :(得分:8)
这是你的答案:
<div class="test">Hello</div>
<div class="one">World</div>
以下jQuery不起作用:
$(data).find('div.test');
因为div是顶级元素而数据不是元素而是字符串,为了使其工作,您需要使用.filter
$(data).filter('div.test');
答案 4 :(得分:6)
不要忘记用解析html来做。像:
$.ajax({
url: url,
cache: false,
success: function(response) {
var parsed = $.parseHTML(response);
result = $(parsed).find("#result");
}
});
必须工作:)
答案 5 :(得分:3)
jQuery find()返回一个包装DOM对象的jQuery对象。您应该能够使用该对象来执行div所需的操作。
答案 6 :(得分:3)
这对我有用,你只需要将.html()放在 - $(response).find(“#result”)
的末尾。答案 7 :(得分:1)
问题是 ajax 响应 正在返回 字符串 ,因此,如果您直接使用 $(响应),它将在控制台中返回 JQUERY: 未捕获错误:语法错误,无法识别的表达式。为了正确使用它,您需要首先使用名为$.parseHTML(response)的JQUERY内置函数。正如函数名称所暗示的那样,您需要首先将字符串解析为 html对象。就像你的情况一样:
$.ajax({
url: url,
cache: false,
success: function(response) {
var parsedResponse = $.parseHTML(response);
var result = $(parsedResponse).find("#result");
alert(response); // returns as string in console
alert(parsedResponse); // returns as object HTML in console
alert(result); // returns as object that has an id named result
}
});
答案 8 :(得分:1)
你可以通过这种方式找到任何div并获得它的属性或任何你想要的东西。
$(response).filter('#elementtobefindinresponse').attr("id");
或
$(response).filter('img#test').attr("src");
答案 9 :(得分:0)
要查看警报中的内容,请使用:
alert( $(response).find("#result").html() );
答案 10 :(得分:0)
尝试 if($(响应).filter('#result')。length) //做某事
答案 11 :(得分:0)
$.ajax({
url: url,
cache: false,
success: function(response) {
$('.element').html(response);
}
});
< span class = "element" >
//response
< div id = "result" >
Not found
</div>
</span>
var result = $("#result:contains('Not found')").text();
console.log(result); // output: Not found
答案 12 :(得分:0)
您只需使用以下代码
var response= $(result);
$(response).find("#id/.class").html(); [or] $($(result)).find("#id/.class").html();
答案 13 :(得分:0)
如果你的ajax调用返回一个JSON数组,来自服务器端的JSON字符串, 那么你应该开始做以下事情:
$("button#submit").click(function() {
$.ajax({
type: "POST",
url: "ajax_create_category",
data: $('form#create_cat_form').serialize(),
success: function(data)
{
if(data)
{
var jsonObj = JSON.parse(data);
if(jsonObj.status)
{
$("#message").html(jsonObj.msg);
}
}
}
});
});
将您的JSON对象解析为JS对象(变量),然后您可以使用数据索引来检索数据! 希望这对你们中的一些人有所帮助! :)
答案 14 :(得分:0)
指定dataType: "html"
。
如果你不这样做,jQuery会猜测所请求的数据类型(检查:http://api.jquery.com/jQuery.ajax/)。我的猜测是,在您的情况下response
是String
而不是DOMObject
。显然,DOM方法不适用于String。
您可以使用console.log("type of response: " + typeof response)
(或alert("type of response:" + typeof response)
进行测试,以防您未运行Firebug)
答案 15 :(得分:0)
您应该在请求中添加dataType: "html"
。我很确定如果它不知道它是HTML,你将无法搜索返回的HTML的DOM。
答案 16 :(得分:0)
回复HTML中是#result
吗?请尝试以下方法。如果没有找到任何内容,jQuery仍将返回一个空对象。
alert(result.length);
答案 17 :(得分:-1)
您可能需要执行类似
的操作var content= (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d
然后你应该可以使用
result = $(content).find("#result")