jquery将无法在java select include检索的文件中工作

时间:2013-03-01 00:01:42

标签: php javascript jquery

我有一个简单的表单,当更改时包含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++;
}

?> 

3 个答案:

答案 0 :(得分:0)

我不确定,因为代码不完整,我的猜测就是你要导入的someotherphp文件中使用的是document.ready函数,因为你使用ajax加载文件而没有调用。

答案 1 :(得分:0)

我遇到了同样的问题...

要解决这个问题,你需要做的就是使用普通的JavaScript编辑ajax到$.ajax所以使用jQuery来处理它......它会起作用..

$.ajax({
  url: "include/some-file.php?q="+str,
  type: "GET",
  datatype: 'html',
  success: function(e){
    $('#make').html(e);
  }
});

答案 2 :(得分: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);
        }
    }
 }