Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在使用Ajax更新某些部分时,使用jquery重新分析html页面/其中的一部分_Javascript_Ajax_Jquery - Fatal编程技术网

Javascript 在使用Ajax更新某些部分时,使用jquery重新分析html页面/其中的一部分

Javascript 在使用Ajax更新某些部分时,使用jquery重新分析html页面/其中的一部分,javascript,ajax,jquery,Javascript,Ajax,Jquery,因为我不熟悉jQuery,所以在解析从ajax检索的html数据时遇到了问题 我有一个表单,它使用ajax发布表单数据,并通过添加一个div(与表单在同一页面上)来显示该数据,从而将内容检索回该页面 我想对该数据执行一些jQuery/Javascript操作,但由于我没有重新加载页面,jQuery或Javascript无法解析该数据 如何在不加载的情况下强制javascript或jquery重新分析整个页面 这是密码 html 谢谢 我的问题是如何对从服务器返回的数据执行jQuery操作 如果要

因为我不熟悉jQuery,所以在解析从ajax检索的html数据时遇到了问题

我有一个表单,它使用ajax发布表单数据,并通过添加一个div(与表单在同一页面上)来显示该数据,从而将内容检索回该页面

我想对该数据执行一些jQuery/Javascript操作,但由于我没有重新加载页面,jQuery或Javascript无法解析该数据

如何在不加载的情况下强制javascript或jquery重新分析整个页面

这是密码

html

谢谢


我的问题是如何对从服务器返回的数据执行jQuery操作

如果要在将HTML添加到页面之前对其执行某些操作,可以执行以下操作:

var fragment = $(data);
这将把HTML解析为元素,并为这些元素提供jQuery包装,而无需将它们添加到页面的任何位置。然后,您可以使用jQuery操作这些操作。当然,最终,如果希望它们出现在页面上,则必须将它们添加到页面的某个位置(通过现有元素上的
html
append
或类似方式)

数据有一些a链接,我想解析这些链接,点击它们执行一些操作

你可以做到。例如:|

HTML片段:

<div>
  <a href="http://stackoverflow.com">Stack Overflow</a>
  <a href="http://w3schools.com" class="remove">w3schools</a>
</div>

这里有一个使用它的页面。在本例中,我删除了一个我们不想要的链接,并将click事件挂接到剩下的链接上,然后将它们附加到页面:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Modify HTML Before Appending</title>
</head>
<body>
  <script>
    $.ajax({
      url: "http://jsbin.com/IsixODa/1",
      dataType: "html",
      success: function(data) {
        var fragment = $(data);
        // Remove some links we don't want
        fragment.find(".remove").remove();

        // Hook the others
        fragment.find("a").click(function() {
          alert("You clicked a link: " + this.href);
          return false;
        });

        // Put them on the page
        fragment.appendTo(document.body);
      },
      error: function() {
        $("<p>Ajax call failed</p>").appendTo(document.body);
      }
    });
  </script>
</body>
</html>

在追加之前修改HTML
$.ajax({
url:“http://jsbin.com/IsixODa/1",
数据类型:“html”,
成功:功能(数据){
变量片段=$(数据);
//删除一些我们不想要的链接
fragment.find(“.remove”).remove();
//勾引其他人
fragment.find(“a”)。单击(函数(){
警报(“您单击了一个链接:+this.href”);
返回false;
});
//把它们放在书页上
fragment.appendTo(document.body);
},
错误:函数(){
$(“Ajax调用失败”

”).appendTo(document.body); } });
@AwladLiton,code addeda假设ajax调用成功,服务器甚至会返回模糊有效的HTML,这应该可以工作。(调用
$('.search data').empty();
完全没有必要。此外,如果
search data
类中有多个元素,它会将HTML添加到所有元素中。)如果ajax调用失败,该代码将失败,因为错误处理程序试图获取符号的值(
数据
)这在任何地方都没有定义。我的问题是如何对从服务器返回的数据执行jQuery操作。您希望对该数据执行什么类型的操作?您现在有了数据,请选择要添加或替换数据的元素,然后将数据添加或替换到此元素中。我添加了var fragment=$(数据);但我在加上这个之后就错了。。(未捕获错误:语法错误,无法识别的表达式:)@AbhishekGoel:这告诉您,
data
中的文本看起来不像HTML,因此jQuery试图将其解释为CSS选择器。这就是你需要解决的问题。确保
数据
开始找到错误,我的数据中有空行,即我在另一页上尝试使用hii,但由于hii上方的空行,它仍然给出错误,并且在我删除这些空行后,它就工作了。再次感谢。:)
<div>
  <a href="http://stackoverflow.com">Stack Overflow</a>
  <a href="http://w3schools.com" class="remove">w3schools</a>
</div>
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Modify HTML Before Appending</title>
</head>
<body>
  <script>
    $.ajax({
      url: "http://jsbin.com/IsixODa/1",
      dataType: "html",
      success: function(data) {
        var fragment = $(data);
        // Remove some links we don't want
        fragment.find(".remove").remove();

        // Hook the others
        fragment.find("a").click(function() {
          alert("You clicked a link: " + this.href);
          return false;
        });

        // Put them on the page
        fragment.appendTo(document.body);
      },
      error: function() {
        $("<p>Ajax call failed</p>").appendTo(document.body);
      }
    });
  </script>
</body>
</html>