当前位置: 首页 > 面试题库 >

使用jQuery在AJAX响应中通过ID查找元素

程和畅
2023-03-14
问题内容

我需要将数据发布到php页面,然后我想获取响应中某个div的文本,但似乎无法正确设置。我对jQuery不太满意,但是我通常可以很快地解决问题……我已经花了一分钟的时间,尝试了所有我发现的东西……我想我只是缺少了正确的东西组合。

$.post("process.php", data , function (response) {

       var w = window.open();

       $(w.document.body).html(response);

       console.log(typeof response); //  yeilds string 
       //create jquery object from the response html
       // var $data = $(response);   // yeilds Uncaught Error: Syntax error, unrecognized expression: + whole html text


       var success =  $($.parseHTML(response)).find("#success"); 
       console.log('success'); 
       console.log(success);        // see screenshot
       console.log(success.text()); // yields nothing 
       console.log(success.val());  // yields undefined 
       // if (window.focus) {w.focus()};

 },'html');

这是输出,console.log(success);红色框是我想要的响应…

!! [这张照片看起来真的很小……当我拍的时候并不是那么小。我希望它仍然可读] [1]

这样做:

var success =  $(response).find("#success"); 
console.log('success'); 
console.log(success);        // yeilds Uncaught Error: Syntax error, unrecognized expression: + whole html text in red

回应是…

<html><head>
   <style>

      div.totals {
          font-family:calibri; font-size:.9em;  display:inline-block; 
          border-width: 2px;  border-style: solid; border-color: #FFD324; 
          background-color: #FAF5D7; color: #514721; 
          width: 500px; 
          }

      div.error_invalid {
         font-family:calibri; font-size:.9em;  display:inline-block; 
         border-width: 2px; border-style: solid; border-color: #9999CC; 
         background-color: #EEEEFF; color: #7979B8; 
     }

    </style>
    </head>
    <body>
    <div class="totals">Total new rows added: 0 out of 0<br/></div>
    <br/><br/>
    <div class="totals">Total updated rows: 0 out of 0 <br/></div>

    <div id="success">true</div>
    </body></html>

我尝试删除样式部分,并添加了html,head和body标签,希望对您有所帮助。.意思是,如果响应仅包含三个div,我也会遇到相同的问题。


问题答案:

注意所有元素如何处于同一 级别
?您需要使用.filter()将当前选择范围缩小到该选择范围内的单个元素,.find()而是查看当前选择范围的后代。

var success =  $($.parseHTML(response)).filter("#success"); 
console.log(success); // div#success


 类似资料:
  • 问题内容: 以下定位技术之间有什么区别? 而且,从 性能角度来看 ,哪种方法是通过id定位元素的最快方法? 问题答案: 您的问题很难回答,肯定会给出一个结论性的答案。实际上,我很想将此问题标记为“太宽泛”,其他答案和评论也支持该问题。 以您的为例。纵观Selenium来源, 大多数 驱动程序只是获取您提供的ID,然后将其传递给有线协议: 如您所知,每个浏览器供应商都在单独的二进制文件中实现自己的有

  • 问题内容: 我正在尝试查找具有动态生成ID的元素。字符串的最后一部分是常量(“ ReportViewer_fixedTable”),因此我可以使用它来定位元素。我试图在XPath中使用正则表达式: 并通过CssSelector定位: 都不行。任何建议,将不胜感激。 问题答案: 那是因为需要修改css选择器,而您几乎就在那里… 从https://saucelabs.com/blog/selenium

  • 问题内容: 给定如下所示的XML: 如何使用ElementTree及其对XPath的支持将元素与内容A匹配?谢谢 问题答案: AFAIK ElementTree不支持XPath。它改变了吗? 无论如何,您可以使用lxml和以下XPath表达式: 结果将是:

  • 问题内容: 如果我使用它,它就会出现..很明显,屏幕上没有任何“找到你”的信息。我究竟做错了什么? 问题答案: 问题是您试图在元素存在之前对其进行访问。您需要等待页面完全加载。一种可能的方法是使用处理程序: 不过,大多数常见的JavaScript库都提供DOM就绪事件。这样比较好,因为也要等待所有图像。在大多数情况下,您不需要这样做。 另一种方法是将script标签放在您的-tag 之前,因为它前

  • 我想从网站上提取一些赔率: https://www.oddsportal.com/soccer/europe/champions-league-2015-2016/real-madrid-manchester-city-dhjzn1pn/#1x2;2

  • 问题内容: 我正在进行ajax调用来获取内容并像下面这样添加内容: 问题是,当我进行更改时,我什么也没得到(没有错误,只有html)。我假设body是一个标签,就像“ a”一样?我究竟做错了什么? 所以这对我有用: 但这不是: 问题答案: 恐怕通过jQuery对象(即)解析返回的HTML 以获取标记注定会失败。 原因是返回的是(try )。现在,根据jQuery文档,当从包含复杂HTML标记的字符