javascript - 使用 PHP 创建 JavaScript 函数,由 jQuery 返回,稍后从页面调用

标签 javascript jquery ajax

本质上,我正在尝试调用动态创建的函数(其名称可能会根据$.get调用而改变)

我有一个 PHP 文件,它生成一个 JavaScript 函数,如下所示:

小部件.php

<?PHP $widgetID=$_GET["w"]; ?>
<script type="text/javascript">
$(document).ready(function() { 
function <?PHP echo $widgetID; ?>Hide(){
    $("#<?PHP echo $widgetID; ?>Object").attr("display", "none");
}
</script>

主页包含将其加载到 <div> 中的代码。使用 $.get() 标记

<div id="widget"></div>
<script>
$( document ).ready(function() {
    $.get( "widget.php?w=widget", function( data ) {
        $( "widget" ).html( data );
    });  
});
</script>

我想做的是稍后调用通过 AJAX 调用加载的函数(在本例中为 widgetHide() )。

示例:

$(document).ready(function() { 
    $('input:file').change(
        widgetHide();
    }
});

但是,无法调用该函数。我尝试以多种方式调用该函数(在 ajaxComplete 等),但没有一种有效。无论我尝试什么,创建的函数widgetHide()无法调用。

我见过一些与此类似的问题,但是,没有一个问题的函数名称可以根据传递给调用的变量进行更改。尽管我认为函数名称可以更改的事实与我想要做的事情本质上无关。

是否有一个函数可以检查该函数是否存在?该函数是否超出范围?

最佳答案

编辑:刚刚意识到你的问题是隐藏函数位于 $(document).ready(function() 内部,这使得无法从外部调用。

无论如何,也请执行以下操作,这样更具可读性,并避免在内联困惑中混合 PHP 和 Javascript。

与其尝试将小部件的名称混合到 JavaScript 函数中,为什么不简单地将小部件 ID 作为参数传递:

<?PHP $widgetID=$_GET["w"]; ?>
<script type="text/javascript">
  function Hide(widgetid) {
    $("#" + widgetid + "Object").attr("display", "none");
  }
</script>

然后这样调用它:

$(document).ready(function() { 
    $('input:file').change(
      Hide('widget');
    }
});

关于javascript - 使用 PHP 创建 JavaScript 函数,由 jQuery 返回,稍后从页面调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47128487/

相关文章:

javascript - 根据 URL 变量显示/隐藏 Div

javascript - 有没有办法在 ie9+ 中实现 promise

javascript - 将文件从桌面拖到浏览器时在 'dragenter' 上显示覆盖

javascript - 在应用 js 和 css 之前,使用 ajax 服务调用获取的 HTML 会变形一段时间

javascript - 通过 ajax 调用请求页面时,Google 图表未加载

javascript - 模态弹出像谷歌

javascript - Phaser.io 中的 setSize

c# - 使用复选框通过 javascript 更改对象可见性?

javascript - 我如何处理 jQuery.Ajax 中的时间响应(数据类型 : JSON)?

asp.net-mvc - 如何每秒自动刷新MVC PartialView