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

私はまったく同じ問題を抱えていました...

これを解決するには、通常の JavaScript を使用して ajax を編集し、$.ajaxjQuery を使用してそれを処理するだけです..そしてそれは動作します..

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

コードが完全ではないため、それについてはわかりません。インポートしている他のphpfileで、ajaxを使用してファイルをロードするため、呼び出されていないdocument.ready関数を使用していると思います。

于 2013-03-01T00:27:41.363 に答える