0

画面解像度に基づいてコンテンツを表示するphpスクリプトをロードするためにajaxを使用しています。このスクリプトはうまく機能しますが、ajax が呼び出す URL もスクリプトの後半で呼び出されます。この URL にはすべての処理情報が含まれています。その結果、すべてのコンテンツが jquery 経由で読み込まれ、php で複製されます。例:

<script type="text/javascript">
$(document).ready(function() {
      $.ajax({
         url: 'functions/maxresults.php',
         type: 'GET',
         data: {h: screen.height, w: screen.width}
      }).done(function ( data ) {
          alert("I am working!");
         document.getElementById("container").innerHTML=data;
        });
    });
</script>

そしてさらに下へ

<?php
include_once("functions/maxresults.php");   
?>

<?php
require_once("databasefunctions.php");
?>

<div id="container">
<div id="movieinfo"> 
<?php include("sidebar.php");?>
<?php
// get the function
include_once ('function.php');
if($_GET['page'])
$page = $_GET['page'];
else
$page = 0; 
$maxresults = -1;
if(($_GET['w']) && ($_GET['h'])) {
  $w = $_GET['w'];
  $h = $_GET['h'];
}
  if ($w == 1920) {
    $maxresults = 24;  
  } else if ($w == 1600) {
    $maxresults = 21;  
  } else if ($w == 1440){ 
    $maxresults = 14;
  } else if ($w == 1366) { 
    $maxresults = 21;
  } else if ($w == 1024) {
    $maxresults = 8;
  } else 
    $maxresults = 6;
echo $maxresults;
$currentpage = $page;
$page = $page*$maxresults;
$numpages = QuickQuery("SELECT COUNT(id) FROM movies WHERE visible=1");
$numpages = mysql_result($numpages, 0);
$numpages = $numpages/$maxresults-1;
$result = GetMoviesByRangeID($page, $maxresults);//Show <maxresults> pages at a time
DisplayResults($result); 
?>
</div>
</div>

PHP インクルードを削除できないか、スクリプトがまったく機能しません。jquery で include_once を作成すると、どのようにコーディングすればよいでしょうか?

4

1 に答える 1

0

PHP はプリプロセッサです。したがって、「後で」ファイルに含めることは問題ではありません。include_once は、JavaScript が実行される前に処理され、出力されます。

include_once スクリプトもコンテナ div を出力していることが問題のようです。したがって、その行を削除すると、javascript が壊れます。代わりにこれを試してください:

  1. maxresults.php ファイルからコンテナー div を削除します。
  2. <?php include_once('functions/maxresults.php);>をコンテナーの ID を持つ空の div に置き換えます。<div id="container"></div>

JavaScript が動作するはずです:

<script type="text/javascript">
$(document).ready(function() {
  $.ajax({
     url: 'functions/maxresults.php',
     type: 'GET',
     data: {h: screen.height, w: screen.width}
  }).done(function(resp) {
      alert("I am working!");
      $("#container").html(resp);
    });
});
</script>

そしてさらに下へ

<div =id="container"></div>

maxresults.php

<?php
require_once("databasefunctions.php");
?>

<div id="movieinfo"> 
<?php include("sidebar.php");?>
<?php
// get the function
include_once ('function.php');
if($_GET['page'])
$page = $_GET['page'];
else
$page = 0; 
$maxresults = -1;
if(($_GET['w']) && ($_GET['h'])) {
  $w = $_GET['w'];
  $h = $_GET['h'];
}
  if ($w == 1920) {
    $maxresults = 24;  
  } else if ($w == 1600) {
    $maxresults = 21;  
  } else if ($w == 1440){ 
    $maxresults = 14;
  } else if ($w == 1366) { 
    $maxresults = 21;
  } else if ($w == 1024) {
    $maxresults = 8;
  } else 
    $maxresults = 6;
echo $maxresults;
$currentpage = $page;
$page = $page*$maxresults;
$numpages = QuickQuery("SELECT COUNT(id) FROM movies WHERE visible=1");
$numpages = mysql_result($numpages, 0);
$numpages = $numpages/$maxresults-1;
$result = GetMoviesByRangeID($page, $maxresults);//Show <maxresults> pages at a time
DisplayResults($result); 
?>
</div>
于 2013-03-02T17:05:54.970 に答える