Javascript - Ajax readyState坚持1

时间:2014-12-25 06:11:45

标签: javascript php jquery ajax

我已经阅读了我能找到的所有线程,并试图调试我的代码几个小时,但我被阻止了,不知道为什么它不起作用。这肯定是一个愚蠢的错误。

上下文:我希望在它到达编辑器之前清理tinyMce插件发送的数据。为此,我想使用已存在的php函数,以保持一致性,以避免从php重写200行到js。

所以我为编辑器设置了js,除了调用清理脚本外,它完美无缺:

if ( lln_mytext_val != "" ) {

    var xhr = new XMLHttpRequest();

    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 ) {

            lln_mytext_val = xhr.responseText ;
        }
        else {
            alert ( xhr.readyState+" - "+xhr.status ) ;
        }
    }

    xhr.open ( 'GET' , 'sanitize.php?the_slug='+lln_mytext_val , true ) ;
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.send (  ) ;

}

在sanitize.php中,有一个非常简单的代码:

$tockeck_slug = $_GET['the_slug'] ; 

$newslug= sanitize_title( $tockeck_slug ) ;
$newslug = str_replace ( "-" , "_" , $newslug) ; 
if ( substr ( $newslug, 0 , 6 ) != 'llnfl_' ) 
    { $newslug= "llnfl_".$newslug; }
echo $newslug; 

当我在浏览器中直接调用sanitize.php时,它可以工作。 我检查了Firefox控制台,我没有404,也没有js错误

但是当我使用js时,我只能得到1 - 0

的警报

(当然,lln_mytext_val不是空的!)

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。

当您在TinyMce中时,对XMLHttpRequest的直接调用无法正常运行。

使用tinymce.util.XHR Class解决了被困在readyState 1中的问题