首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ajax在javascript中重新加载url

使用ajax在javascript中重新加载url
EN

Stack Overflow用户
提问于 2018-10-30 04:55:11
回答 1查看 85关注 0票数 1

我正在尝试刷新一个联盟网址,这是一个内部的JavaScript与AJAX,但我不能得到它的工作。

代码如下:

代码语言:javascript
复制
<script type="text/javascript">
    (function() {
        var mdWidgetUrl = "https://herecomestheurl";
        var s = document.createElement("script"), 
            s1 = document.getElementsByTagName("script")[0];
        s.type = "text/javascript";
        s.async = true;
        s.src = mdWidgetUrl;
        s1.parentNode.insertBefore(s, s1);
    })();
    function fetchdata(){
        $.ajax({
            url: 's.src',
            type: 'post',
            success: function(data){
                // Perform operation on return value
                alert(data);
            },
            complete:function(data){
                setTimeout(fetchdata,10000);
            }
        });
    }        
    $(document).ready(function(){
        setTimeout(fetchdata,10000);
    });                
</script>

我尝试做的是AJAX每10秒重新加载一次URL,也就是所谓的"mdWidgetUrl",而不是刷新整个页面。这段代码不起作用,因为我不知道如何在AJAX函数中标记s.src

EN

回答 1

Stack Overflow用户

发布于 2018-10-30 05:34:34

让我们来看看AJAX调用的不同settings

url:

当你尝试的时候:

代码语言:javascript
复制
url: 's.src',

您传递的不是s对象的src属性的内容,而是字符串"s.src"。但即使你这样做了:

代码语言:javascript
复制
url: s.src,

它不会工作,因为s超出了范围。s是在一个lives ( (function() {... )中声明的,它就在其中。您不能从外部访问它。

相反,在创建s脚本之后,您可以给它一个id。如下所示:

代码语言:javascript
复制
var s = document.createElement("script");
s.id = "mdWidgetScript";

然后,您可以轻松地从ajax调用中检索src属性的值:

代码语言:javascript
复制
$.ajax({
  url: $("#mdWidgetScript").attr('src'),

请注意,使用id不是必须的。您可以找到脚本,就像找到s1一样,选择带有<script>标记的第一个元素:

代码语言:javascript
复制
url: document.getElementsByTagName("script")[0].getAttribute("src");
// or with jQuery
url: $("script:eq(0)").attr('src');

我只是发现使用id是一种更干净、更防弹的方式。

type:

它是method的别名。您正在从服务器检索数据,而不是发送到。将POST切换为GET (或保留此设置,因为GET是默认设置)。请阅读this question,了解其中的区别。

dataType

您应该相应地设置dataType (检查this question)。如果URL指向脚本,则使用dataType: "script",。实际上,您可以使用$.getScript(),它是这种AJAX调用的一种简写方法。

如果正确调整设置后仍有问题:

其他问题:

  • 检查正在发送的数据中是否有错误

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53053660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档