2012-07-19 16 views
5

Me encuentro con un problema, luchando durante horas. Estoy usando jQuery carga para cargar una página php que contiene TinyMCE y sus secuencias de comandos (wordpress)Congelador cuando cargo tinyMCE a través de jQuery .load()

$('.quickedit_form_' + parentID).load('<?php bloginfo('template_directory'); ?>/ajax/quickedit.php?id=' + parent.attr('id').replace('post-', ''), function(){ 
     tinyMCE.init({ 
      skin: 'wp_theme' 
     }); 
     $.scrollTo(parent, 800, {offset: {left: 0, top: -61}}); 
    }); 

Y mi página php (quickedit.php)

<?php 

// include WordPress 
require('../../../../wp-blog-header.php'); 

// get post 
global $current_user; 
$id = $_GET['id']; 
$post = get_post($id); 
if ($current_user->ID != $post->post_author) { 
    wp_die(__('Unauthorized access.','sofa')); 
} 

?> 

<h1 class="quickedit_h"><?php printf(__('Editing Post #%s','sofa'), $post->ID); ?></h1> 

<label for="edit_title_<?php echo $id; ?>" class="quickedit_label"><?php _e('Title:','sofa'); ?></label> 
<input type="text" name="edit_title_<?php echo $id; ?>" id="edit_title_<?php echo $id; ?>" value="<?php echo $post->post_title; ?>" class="quickedit_field" /> 

<label for="edit_type_<?php echo $id; ?>" class="quickedit_label"><?php _e('Post Type:','sofa'); ?></label> 
<select name="edit_type_<?php echo $id; ?>" id="edit_type_<?php echo $id; ?>" class="quickedit_select"> 
    <option value="text"<?php selected("text", sofa_post_type()); ?>><?php _e('Blog','sofa'); ?></option> 
    <option value="image"<?php selected("image", sofa_post_type()); ?>><?php _e('Image','sofa'); ?></option> 
    <option value="video"<?php selected("video", sofa_post_type()); ?>><?php _e('Video','sofa'); ?></option> 
</select> 

<div class="quickedit_save"><input type="button" value="<?php _e('Save','sofa'); ?>" class="button-secondary" /></div> 

<?php 
wp_editor($post->post_content, 'edit_content_'.$id, $settings = array(
    'wpautop' => true, 
    'media_buttons' => true, 
    'textarea_name' => 'edit_content_'.$id, 
    'textarea_rows' => 10, 
    'tabindex' => '', 
    'editor_css' => '', 
    'editor_class' => 'edit_content', 
    'teeny' => false, 
    'dfw' => false, 
    'tinymce' => true, 
    'quicktags' => true 
)); 
?> 

<div class="quickedit_save"><input type="button" value="<?php _e('Save','sofa'); ?>" class="button-secondary" /></div> 

<?php wp_footer(); ?> 

Cuando accedo directamente en quickload.php navegador, todo se carga sin problemas, sin demora ni nada. Pero cuando accedo a él a través de jQuery .load() el tiempo y los botones tardan unos 15 segundos en cargarse, el navegador se congela (el usuario no puede interactuar con nada) en Firefox y Chrome.

Puede alguien sugerir a mí por qué esto está ocurriendo, estado horas tratando con este .. :(

. Nota: Cuando tengo acceso a quickedit.php directamente las cargas TinyMCE fina y rápida del accidente/congelación ocurre cuando . la llamada de la función jQuery .load

necesito cualquier dirección a lo que podría ser la causa de este problema

+0

Estoy teniendo el mismo problema con .get() A través de mi depurador se congela mientras se carga el archivo jquery.min.ui.js para mí, nada que ver con asynch. Solo se congela/se carga lentamente en la primera solicitud .get() en la página, las solicitudes subsiguientes responden como se espera. Estoy pensando que es algo relacionado con el servidor proxy para mí. – elzaer

Respuesta

0

que se trate de usar interfaz de bajo nivel de ajax de jQuery:? jQuery.ajax

jQuery(function($) { 
    var ajax_url = '<?php bloginfo('template_directory'); ?>/ajax/quickedit.php?id=' + parent.attr('id').replace('post-', ''); //Included for readability 
    //Check if the elem is in the DOM, if so, load it via AJAX 
    if ($('.quickedit_form_' + parentID).length >0) { 
    $.ajax({ 
     url: ajax_url 
     complete: function () { 
      tinyMCE.init({ 
      skin: 'wp_theme' 
      }); 
     $.scrollTo(parent, 800, {offset: {left: 0, top: -61}}); 
     } 
    }); 
    } 
}); 

La razón por la que puede encontrarse con errores es hacer con la naturaleza de múltiples argumentos de jQuery.load (además, creo que está obsoleto ...?) Puede estar causando una solicitud síncrona (de bloqueo).