load plugin with ajax

时间:2013-07-14 作者:CBeTJlu4ok

有没有办法用ajax加载插件?我要加载Quick Chat 支持使用PHP和短代码初始化的插件

[quick-chat height="400" room="default" userlist="1" userlist_position="left" smilies="1" send_button="0" loggedin_visible="1" guests_visible="1" avatars="1" counter="1"]

<?php
global $quick_chat;
if(is_object($quick_chat) && method_exists($quick_chat, \'quick_chat\')){
    echo $quick_chat->quick_chat(400, \'default\', 1, \'left\', 0, 0, 1, 1, 1, 1);
}
?>
我的JS侧

key = \'1\';
jQuery.ajax({
    type : \'POST\',
    url : apfajax.ajaxurl,
    data : {
        action : \'loadMyChat\',
        key: key
    },
    dataType: "json",
    success : function(data) {
        jQuery("#chatModal").find(".modal-body").html(data.html);
    },
    error: function(MLHttpRequest, textStatus, errorThrown){
            alert(textStatus);
    }
})
PHP端

function loadMyChat() {
    $key = $_POST[\'key\'];
    $count = 1;
    $html = 2;
    global $quick_chat;

    //$ak = $quick_chat->quick_chat();
    $ak = $quick_chat->quick_chat(\'300\', \'default\', \'1\', \'left\', \'0\', \'0\', \'1\', \'1\', \'1\', \'1\');
    die(json_encode(array(
        \'html\' => $ak,
        \'count\' => $count
    )));
}
输出:

<div class="quick-chat-container" data-quick-chat-id="X3LUUGVZNhuG" data-quick-chat-height="300" data-quick-chat-room-name="default" data-quick-chat-userlist="1" data-quick-chat-userlist-position="left" data-quick-chat-smilies="0" data-quick-chat-send-button="0" data-quick-chat-loggedin-visible="1" data-quick-chat-guests-visible="1" data-quick-chat-avatars="1" data-quick-chat-counter="1"><div class="quick-chat-loading">LOADING...</div></div>
正如您所看到的,集装箱只包括装载块,其他块在哪里?text区域和历史?

好的,还有一个有趣的问题,这里有一个用于初始化聊天的公共函数。

public function quick_chat($height = 400, $room = \'default\', $userlist = 1, $userlist_position = \'left\', $smilies = 1, $send_button = 0, $loggedin_visible = 1, $guests_visible = 1, $avatars = 1, $counter = 1) {
    $content = \'\';
    ob_start();

    echo \'<div class="quick-chat-container" data-quick-chat-id="\'.wp_generate_password(12, false, false).\'" data-quick-chat-height="\'.$height.\'" data-quick-chat-room-name="\'.$room.\'" data-quick-chat-userlist="\'.$userlist.\'" data-quick-chat-userlist-position="\'.$userlist_position.\'" data-quick-chat-smilies="\'.$smilies.\'" data-quick-chat-send-button="\'.$send_button.\'" data-quick-chat-loggedin-visible="\'.$loggedin_visible.\'" data-quick-chat-guests-visible="\'.$guests_visible.\'" data-quick-chat-avatars="\'.$avatars.\'" data-quick-chat-counter="\'.$counter.\'">\';
        echo \'<div class="quick-chat-loading">\'.__(\'LOADING...\', \'quick-chat\').\'</div>\';
    echo \'</div>\';

    if(!isset($this->options[\'hide_linkhome\'])){
        echo \'<div class="quick-chat-linkhome"><a href="\'.self::link.\'" target="_blank">\'.__(\'Powered by Quick Chat\', \'quick-chat\').\'</a></div>\';
    }
    $content =  ob_get_contents();
    ob_end_clean();
    return $content;
}
由此判断,我的脚本正确地返回了所有符号。没有加载js或设置了任何ajax处理程序。在我看来,问题是data-quick-chat-id.

我做了一些小把戏,比如在页面加载时返回quick\\u聊天功能,页面加载是隐藏的,在我的用户设置他的cookie(用户和房间)后,我请求我的ajax并用返回的ajax更改这个div。

当然,它仍然不起作用,但我没有改变改变data-quick-chat-id 但那是因为我不知道如何更改data.html (从ajax返回)然后将其插入html。

我走的方向对吗?只是想更新一下,谢谢

1 个回复
SO网友:webdwall

看看插件代码的html输出,我可以说插件用javascript加载了所有其他内容(textarea和history)(查看所有这些数据属性和加载消息)。现在,如果对函数的调用是在页面加载(非ajaxy方式)上进行的,那么插件将加载所需的javascript文件,然后事情就会看起来很好。但由于插件函数是在ajax请求中调用的,因此插件的javascript不会加载,只返回html,这导致了问题的出现。。

一般来说,根据我对wordpress的有限接触,不可能load 通过ajax的插件(或至少大部分插件)。如果是,我会非常有兴趣看到这种方法:)

结束

相关推荐

AJAX问题-处理Zip文件时未捕获语法错误

我正在创建一个应用程序,允许用户填写表单,然后在提交时为他们下载一个定制的zip文件。我正在利用AJAX来完成这项任务。 Build.prototype.ajaxHandler = function(method, values) { jQuery.ajax({ type: \'POST\', url: WP_LOCALIZED[\'url\'], data: {