2013-01-25 57 views
0

我的页面会从response_ajax.php这个码的响应:AJAX响应不运行任何脚本

<input class="btn" name="send_button" type="button" value="check" 
    onClick= 
    "xmlhttpPost('/response_ajax.php', 
    'MyForm', 
    'MyResult', 
    '<img src=/busy.gif>')"; 
    return false;" 
> 

我得到回应;但是,jQuery脚本不适用于到达的代码。我想补充scriptresponse_ajax.php,但没有任何反应:

<?php 

// ... // 

echo ' 

    <div id="whois-response"> 
    <pre>' .$str. '</pre> 
    </div> 

    <script> 
    (function($){ 
     $(function(){ 
     alert("loaded"); 
     }); 
    })(jQuery); 
    </script> 

'; 

?> 

xmlhttpPost功能:

function xmlhttpPost(strURL,formname,responsediv,responsemsg) { 

    var xmlHttpReq = false; 

    var self = this; 

    // Xhr per Mozilla/Safari/Ie7 

    if (window.XMLHttpRequest) { 

     self.xmlHttpReq = new XMLHttpRequest(); 

    } 

    // per tutte le altre versioni di IE 

    else if (window.ActiveXObject) { 

     self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 

    } 

    self.xmlHttpReq.open('POST', strURL, true); 

    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 

    self.xmlHttpReq.onreadystatechange = function() { 

     if (self.xmlHttpReq.readyState == 4) { 

      // Quando pronta, visualizzo la risposta del form 

      updatepage(self.xmlHttpReq.responseText,responsediv); 

     } 

     else{ 

      // In attesa della risposta del form visualizzo il msg di attesa 

      updatepage(responsemsg,responsediv); 



     } 

    } 

    self.xmlHttpReq.send(getquerystring(formname)); 

} 


function getquerystring(formname) { 

    var form = document.forms[formname]; 

    var qstr = ""; 



    function GetElemValue(name, value) { 

     qstr += (qstr.length > 0 ? "&" : "") 

      + escape(name).replace(/\+/g, "%2B") + "=" 

      + escape(value ? value : "").replace(/\+/g, "%2B"); 

      //+ escape(value ? value : "").replace(/\n/g, "%0D"); 

    } 



    var elemArray = form.elements; 

    for (var i = 0; i < elemArray.length; i++) { 

     var element = elemArray[i]; 

     var elemType = element.type.toUpperCase(); 

     var elemName = element.name; 

     if (elemName) { 

      if (elemType == "TEXT" 

        || elemType == "TEXTAREA" 

        || elemType == "PASSWORD" 

        || elemType == "BUTTON" 

        || elemType == "RESET" 

        || elemType == "SUBMIT" 

        || elemType == "FILE" 

        || elemType == "IMAGE" 

        || elemType == "HIDDEN") 

       GetElemValue(elemName, element.value); 

      else if (elemType == "CHECKBOX" && element.checked) 

       GetElemValue(elemName, 

        element.value ? element.value : "On"); 

      else if (elemType == "RADIO" && element.checked) 

       GetElemValue(elemName, element.value); 

      else if (elemType.indexOf("SELECT") != -1) 

       for (var j = 0; j < element.options.length; j++) { 

        var option = element.options[j]; 

        if (option.selected) 

         GetElemValue(elemName, 

          option.value ? option.value : option.text); 

       } 

     } 

    } 

    return qstr; 

} 


function updatepage(str,responsediv){ 

    document.getElementById(responsediv).innerHTML = str; 

} 
+2

什么是xmlhttpPost?一些神奇的代码? – epascarello

+0

你想要什么?execute alert(“loaded”)? – mpm

+1

@epascarello你对魔法代码有什么反应? –

回答

0

我可能是错的,但我敢肯定你不能这样做多行字符串,除非它被配置为这样(并运行更新版本的PHP):

echo ' 

    <div id="whois-response"> 
    <pre>' .$str. '</pre> 
    </div> 

    <script> 
    (function($){ 
     $(function(){ 
     alert("loaded"); 
     }); 
    })(jQuery); 
    </script> 

'; 

尝试改变,为:

echo <<<EOD 

    <div id="whois-response"> 
    <pre> $str </pre> 
    </div> 

    <script> 
    (function($){ 
     $(function(){ 
     alert("loaded"); 
     }); 
    })(jQuery); 
    </script> 

EOD; 

我想你的Ajax响应是一个PHP的错误,而不是脚本,你觉得它返回。

+0

谢谢;但是,没有PHP错误。无论如何,我找到了一个解决方案。 –

0

得到它加入jQuery的工作人员作为一个功能

function updatepage(str,responsediv){ 

    document.getElementById(responsediv).innerHTML = str; 

    (function($){ 
     $(function(){ 
     $('html').my_jQuery_staff(); 
     }); 
    })(jQuery); 

} 

主要JavaScript文件用jQuery工作:

// ~~ jQuery ~~ 
$(document).ready(function() { 

    $.fn.my_jQuery_staff= function() { 
     return this.each(function() { 

     // Include jQuery staff here. 

     }); 
    }; 

    $('html').my_jQuery_staff(); 

});