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

时间:2017-11-06 01:26:39

标签: javascript jquery ajax

基本上我试图调用一个动态创建的函数(其名称可能根据$.get调用而改变)

我有一个生成JavaScript函数的PHP文件:

widget.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()都无法调用。

我已经看到了一些类似的问题,但是,根据传递给调用的变量,没有能够改变的函数名称。虽然我认为函数名称可以改变的事实与我想要做的事情基本无关。

是否有检查功能是否存在的功能?功能是否超出范围?

1 个答案:

答案 0 :(得分:2)

编辑:刚刚意识到你的问题是隐藏功能在$(文件).ready(function()内部,无法从外部调用。

无论如何,请执行以下操作,它更具可读性,并避免在内联混乱中混用PHP和Javascript。

为什么不简单地将小部件ID作为参数传递,而不是试图将小部件的名称混合到javascript函数中:

<?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');
    }
});