【问题标题】:Updating innerHTML with HTML from a php function? (using xajax)使用 php 函数中的 HTML 更新 innerHTML? (使用 xajax)
【发布时间】:2011-02-24 07:50:24
【问题描述】:

我通过 xajax 成功更新了 DIV 的 innerHTML(当我单击链接时),但仅当我在函数本身中分配 HTML 时,而不是当我从其他函数调用它时。

解释

  // For the sake of testing
$output=rand(20,40);

  // Add new HTML to container through $output
$ajax_resp->assign('div_container','innerHTML', $output);

return $ajax_resp;

这很好用。当我通过单击链接调用此函数时,容器会更新为随机数。但是,当我将 $output 更改为

$output=$compile->show('text');

这是(简化的)

function show($var) { echo $var; }

它没有显示出来。函数show 在 xajax 之外完美运行。有什么建议吗?

【问题讨论】:

    标签: php html css ajax xajax


    【解决方案1】:
    function show($var) { echo $var; }
    

    此函数不返回任何内容,它会将值回显到屏幕上。但是,您可能希望大多数函数返回一个值,以便它们可以使用它。基本上,当你这样做时

    $output=$compile->show('text');
    

    它不会从 show 方法获得任何输入,因为 show 不返回任何值。我想如果您将其更改为以下内容:

    function show($var) { return $var; }
    

    它会起作用的。

    【讨论】:

    • 我明白你的意思。问题是我在整个网站中使用show 函数作为通用输出处理程序。如果我将其更改为 return 而不是 echo 这将意味着更新数百个被调用的实例。
    • 好的,但是如果你不能改变 show 方法,因为它会破坏其他功能,你将不得不寻找另一种方法。因为让$ajax-resp->assign() 知道要处理什么的唯一方法是返回一个值给它。但是,由于您想要做一些其他的事情,而您通常使用 Show() 做的事情,也许为您现在想要做的事情创建一个新函数是个好主意。
    • 另外,每次你调用show你都会在页面上echo一些东西,所以如果你用show返回一个消息,它也会显示在页面的某个地方。跨度>
    • 要解决 show() 函数的问题,只需添加第二个参数 (show($text, $return_type = null)) 并更改函数以在将第二个参数设置为 @987654333 时返回值而不是回显它@。这样您就不必更改对该函数的每次调用
    • 我正在为我的网站创建一个全新的部分,所以也许一个新功能会是个好主意。 show 函数实际上是一个非常简单的类似表格的设计,我可以轻松复制。
    【解决方案2】:

    您是否尝试将function show($var) { echo $var; } 更改为function show($var) { return $var; }。应该能解决你的问题

    【讨论】:

    • Timo Willemsen 刚刚建议过,我会试试的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2012-09-09
    • 2010-10-25
    • 2021-07-03
    • 1970-01-01
    相关资源
    最近更新 更多