0

我有一个简单的表单,当更改时在 div 中包含一个 php 文件。由于某种原因,当放置在该包含文件中时,jquery 不会加载?有人可以告诉我为什么这不起作用。

    <select name='make' onChange='show(this.value)'>
<option value='some-file.php'>the file</option>
</select>


<div id="make">Where the file is loaded and where jquery wont work</div>

<script type="text/javascript">
function show(str)
{
if (str=="")
  {
  document.getElementById("make").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("make").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","include/some-file.php?q="+str,true);
xmlhttp.send();
}
</script>

然后 some-file.php

    $models = mysql_query("SELECT model, id FROM model where make like '%".$q."%' order by model asc") or die(mysql_error());
    //Puts it into an array
$count = 1;

$max = 3;

while($model = mysql_fetch_array( $models ))
{

if($count%20==1)
    echo '</ul><ul style="float:left; padding:0; margin-right:10px;" class="makesModels">';

echo "<li style='padding-right:5px; display:block;'><font color='#fe9000'>".$count.".</font> ".$model['model']."&nbsp;<a class='delete-model".$model['id']."'>x</a></li>";

<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.1.min.js'></script>
<script type='text/javascript'>
$(docuument).ready(function() {
$(".delete-model<? echo $model['id'];?>").click(function() {                        
alert("delete");
                                                                });
});
</script>

$count++;
}

?> 
4

3 回答 3

0

出于安全原因,使用 ajax 加载的脚本或通常注入 DOM 的脚本字符串将不会执行

你可以使用 eval 让它工作,虽然我必须警告你,你可能会打开一罐蠕虫..

添加后document.getElementById("make").innerHTML=xmlhttp.responseText;..

var parent = document.getElementById('make');
var myScript = parent.getElementsByTagName('script');
for(var i=0,len=myScript.length; i<len; i++){
   executeScrpt(myScript[i]);
 }

然后执行功能...

 function executeScrpt(scrpt){
    if(scrpt.innerHTML != ""){
         eval("("+script.innerHTML+")");
    } else {
        if(scrpt.src != ""){
            var myScrpt = document.createElement("script");
            myScrpt.src = scrpt.src;
            document.head.appendChild(myScrpt);
        }
    }
 }
于 2013-03-01T00:51:55.750 回答
0

我不确定,因为代码不完整,我的猜测是在您正在导入的某个其他 php 文件上,您使用 document.ready 函数,该函数未调用,因为您使用 ajax 加载文件。

于 2013-03-01T00:27:41.363 回答
0

我有同样的问题......

要解决这个问题,您需要做的就是将 ajax 从使用普通 JavaScript 编辑为$.ajax使用 jQuery 来处理它..它会工作..

$.ajax({
  url: "include/some-file.php?q="+str,
  type: "GET",
  datatype: 'html',
  success: function(e){
    $('#make').html(e);
  }
});
于 2013-03-01T00:31:31.877 回答