【问题标题】:Load body of another html to jQuery and store as javascript var将另一个 html 的正文加载到 jQuery 并存储为 javascript var
【发布时间】:2012-07-26 15:49:32
【问题描述】:

我想要做的是读取另一个html的正文内容并将其保存为javascript函数中的var。我目前使用 jQuery 拥有的是 $(id of this document).load(link goes here)。例如:

$("#test").load("/form.cgi?A1=?")

表单只有一个包含<body>some value</body>的正文

<a id="test">hello</a> 这个方法很好用,因为我根本不用 DOM。

但是,我想将数据存储到 javascript 变量中。所以,我想我已经完成了一半。有人可以说明如何做到这一点吗?

理想情况下,类似于:

'函数(测试) {

var x = $.load(test);

//操纵x如parseInt/parseFloat等

} ' 谢谢!

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    基于 codingbiz 提供的内容,这是我目前拥有的。它不漂亮,但它确实可以解决问题:

    $.get( /form.cgi?A1=?, function(data){
        document.getElementById("value").innerHTML = data;
        var y = parseFloat(document.getElementById("value").innerHTML);
        alert(y);
    });
    

    我之所以使用document.getElementById("value").innerHTML,是为了去掉包围所需值的<body>标签(即<body>value</body>)。到目前为止,这是我知道的关于如何正确解析 Int/parseFloat 的唯一方法。如果我不这样做,那么由于 body 标签,它会返回 NaN。如果你有更好的方法,请告诉我。谢谢

    【讨论】:

      【解决方案2】:

      你可能想改变你的方法:

      var myVar = '';
      $.get('/form.cgi?A1=?', function(data) {
        myVar = data;
      });
      
      alert(myVar);
      

      无法在回调函数之外访问myVar的值,因为这个Ajax调用在页面加载过程中是异步的意思,回调函数没有被调用,myVar的值也没有改变,alert 语句执行,这就是你得到空数据的原因。

      要保留此答案,请在回调函数中使用myVar,如下所示:

      var myVar = '';
      var externalVar = '<p>text</p>';
      $.get('/form.cgi?A1=?', function(data) {
        myVar = data;
        //use myVar here for whatever purpose you want it for
        var myNewVar = myVar + ' ' + externalVar;
      });
      

      您可以在回调函数完成后立即使用myVar 的值,可能是在ajax 调用后5 秒、30 秒等

      <input type="button" value="pol" onclick="alert(myVar);" /> //should work
      

      有关更多信息,请参阅我在 cmets 中发布的链接

      【讨论】:

      • 嗨,codingbiz。我尝试了这种方法,但是,响应为空或''。当我返回带有 id="test" 元素的 '$("#test").load("/form.cgi?A1=?")' 时,它成功读取了外部 html 的正文内容并替换了此类 id 的元素。
      • 我确实检查过,完全没有错误。我尝试了所有发布的方法,但没有一个可以工作。外部html页面只有'value'可以吗?
      • 那些标签格式不正确
      • 在该函数中设置警报。 alert(data) or alert(myVar)。它对我有用
      • 这是正确的,因为这种方法 '$("#test").load("/form.cgi?A1=?")' 有效。这真的很奇怪。如果我在 myVar=data; 之后将 alert(myVar) 放入函数中,它会显示所有内容('正确值')。但是,如果我将它放在 $.get 之外,那么它会显示为空或 ''
      【解决方案3】:

      .load()$.ajax() 的缩写,因此,您可以像这样使用普通的 Ajax 请求:

      jQuery:

      var result;
      $.ajax({
          type: 'POST',
          url: '/form.cgi?A1=?',
          success: function(data) {
              result = data;
          },
          async: false
          // async to false so that we don't access an empty variable before the request is finished
      });
      

      演示:http://jsfiddle.net/SO_AMK/wHXrM/

      【讨论】:

        【解决方案4】:
        var x = $("#test").load("/form.cgi?A1=?").html();
        

        如果您希望 html 文件的内容保持原样,则应该这样做。

        【讨论】:

        • 嗨,亚历克斯,感谢您的回答。但是,我只想将其他 html 的正文内容加载到 javascript 变量中。正文内容包含一个单词 string/int,如 Hi 或 123。问题是如果 #test 不作为当前文档中元素的 id 存在,那么它将不会被执行。有没有类似 var x = $.load("/form.cgi?A1=?") 的东西?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-18
        • 1970-01-01
        • 1970-01-01
        • 2015-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多