0

私の jquery ajax コードは、ローカル サーバーで正常に動作しています。ただし、リモート サーバー justhost.com では機能しません。これは私を夢中にさせています。:(誰かが私が間違っているところを指摘できますか?

Merry Flowersは私のウェブサイトへのリンクです。firebug をオンにして Web サイトにアクセスすると、以下のエラーが表示されます。

firebug でデバッグしようとすると、次の 2 つのエラーが発生します。

次の行で構文エラーが発生します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

さまざまな doctype を試しましたが、同じエラーが発生しました。

次の行で「$ is not defined error」が表示されます。

$(document).ready(function(){

Google chrome 開発者ツールのエラー:

    Resource interpreted as Script but transferred with MIME type text/html: "http://www.merryflowers.com/js/jquery.js".
jquery.js:1Uncaught SyntaxError: Unexpected token <
home:8Uncaught ReferenceError: $ is not defined

Chrome開発者ツールのネットワークタブをクリックすると、

jquery.js's type is text/html not application/javascript. While the other javascript files are of type application/javascript.

Lazerblade によって要求されたすべての修正後の Cakephp の元の default.ctp コード:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 

Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<?php
 echo $this->Html->charset();
 ?>
<title>
    <?php  __('Merry Flowers Montessori'); ?>
    <?php echo $title_for_layout; ?>
</title>
<?php
    //echo $this->Html->meta('icon');
    echo $this->Html->css('cake.generic');  //link to cake.generic.css will be 

placed in $scripts_for_layout
        echo $this->Html->css('navbar.css'); 
        echo $this->Html->script('jquery.js'); //Include jquery library
/*      echo $this->Html->script('swfobject.js');
*/

    echo $this->Session->flash();
    echo $this->Session->flash('email');
    echo $scripts_for_layout;
?>
<script type="text/javascript">
   //var j=jQuery.noConflict();
  $(document).ready(function(){
      $("#MerryParentEmail").change(function(){
        //txt=$("#MerryParentEmail").val();
        email_id=$("#MerryParentEmail").serialize();
        //alert(txt);
        $.post("/students/get_parent_info",email_id,function(result_str){
        result_array=result_str.split('*****');
          $("#MerryParentInitial").val(result_array[0]);
          $("#MerryParentName").val(result_array[1]); 
          $("#MerryParentLandline").val(result_array[2]);
          $("#MerryParentMobile").val(result_array[3]); 
          $("#MerryParentAddress").val(result_array[4]);
          $("#MerryParentStateId").val(result_array[5]);
          state=result_array[5];
          txt_str="state_id="+state;
          $.get("/students/getcities",txt_str,function(result){
            $("#MerryParentCityId").html(result).show();
            $("#MerryParentCityId").val(result_array[6]);
          });
          $("#MerryParentPostalCode").val(result_array[7]);
        });
      });

       $("#MerryParentStateId").change(function(){
        state=$(this).val();
        txt_str="state_id="+state;
        $.get("/students/getcities",txt_str,function(result){
            $("#MerryParentCityId").html(result).show();
        });
       });
 });
 </script>
</head>
<body>

<div id="container">
    <div id="header">
            <?php 
               echo $this->element('logo');
               echo $this->element('navbar');
              ?>
    </div> <!-- finish div header -->
    <div id="content">
        <div>
            <div id="content1">
            <?php echo $content_for_layout; ?>
            </div>
            <div id="content2">
                <?php 
                       echo $this->Html->link($this->Html->image("admission_open.gif",array("alt"=>"admissions")),
                                "/students/add",array('escape'=>false));  //if escape is false, admission_open.gif 

displays, otherwise only link <img src="/merry_flowers/img/admission_open.gif" alt="admissions"/> displays.
                          echo $this->Html->image("contact_us.gif", $options=array()); 
                    ?>  
                </div> 
            </div>
        </div>  <!--finish div content-->
        <div id="footer"> 
            &copy;  2011 Merry Flowers Montessori | Designed by VRI Web
        </div>
   </div><!--div container finish-->
</body>
</html>

以下はすべて修正後の default.ctp のビュー ソース コードです (cakephp のレイアウト ページ)。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 

Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   <title>
        Merry Flowers Montessori        Home    </title>
    <link rel="stylesheet" type="text/css" href="/css/cake.generic.css" /><link rel="stylesheet" type="text/css" href="/css/navbar.css" /><script type="text/javascript" src="/js/jquery.js"></script><script type="text/javascript" src="/js/swfobject.js"></script>   <script type="text/javascript">
       //var j=jQuery.noConflict();
      $(document).ready(function(){
          $("#MerryParentEmail").change(function(){

        //txt=$("#MerryParentEmail").val();
        email_id=$("#MerryParentEmail").serialize();
        //alert(txt);
        $.post("/students/get_parent_info",email_id,function(result_str){
        result_array=result_str.split('*****');
          $("#MerryParentInitial").val(result_array[0]);
          $("#MerryParentName").val(result_array[1]); 
          $("#MerryParentLandline").val(result_array[2]);
          $("#MerryParentMobile").val(result_array[3]); 
          $("#MerryParentAddress").val(result_array[4]);
          $("#MerryParentStateId").val(result_array[5]);
          state=result_array[5];
          txt_str="state_id="+state;
          $.get("/students/getcities",txt_str,function(result){
            $("#MerryParentCityId").html(result).show();
            $("#MerryParentCityId").val(result_array[6]);
          });
          $("#MerryParentPostalCode").val(result_array[7]);
        });
      });

       $("#MerryParentStateId").change(function(){
        state=$(this).val();


txt_str="state_id="+state;
            $.get("/students/getcities",txt_str,function(result){
                $("#MerryParentCityId").html(result).show();
            });
           });
     });
     </script>
</head>

<body>
<div id="container">

    <div id="header">
            <div>
<div style="float:left; width:98%; background-color:#ffffff;">
<img src="/img/logo.png" alt="" />  </div>
<div style="float:right; width:5%; top:100%; right:10%;">
<a href="/pages/home">Home</a>  </div>

    </div><div id="menu">

    <ul id="nav">

<!--        <li><a href="/pages/home">Home</a></li>
-->         <li><a href="#">Our Program</a><ul>

        <li><a href="/pages/preschool">Preschool</a></li>
        <li><a href="/pages/kindergarten">Kindergarten</a></li>
        <li><a href="/pages/summer_camp">Summer Camp</a></li>
        </ul>
        </li>
        <li><a href="#">About Us</a><ul>

        <li><a href="/pages/about_us">Merry Flowers</a></li>
        <li><a href="/pages/tour_our_school">Tour Our School</a></li>
        <li><a href="/pages/contact_us">Contact Us</a></li>
        </ul>
        </li>

        <li><a href="#">My Child</a><ul>
        <li><a href="/merry_parents/register">Report Card</a></li>

        </ul>
        </li>

        <li><a href="#">Events</a><ul>
        <li><a href="#">News &amp; Events</a>               <ul>
                <li><a href="/pages/sports_day">Sports Day</a></li>
                <li><a href="/pages/annual_day">Annual Day</a></li>

            </ul>
        </li>

        <li><a href="/pages/list_of_holidays">List of Holidays</a></li>
        </ul>
        </li>
        <li><a href="#">FAQ</a><ul>
        <li><a href="/pages/faq">FAQ</a></li>

        <li><a href="/feedbacks/add">Feedback</a></li>
        <li><a href="/forum/home">Discussion</a></li>
        </ul>
        </li>
        <li><a href="#">Admissions</a><ul>
        <li><a href="/students/add">Enroll Now</a></li>
        </ul>

        </li>
    </ul><!--finish ul nav-->
   </div> <!--finish div menu-->        </div> <!-- finish div header -->
    <div id="content">
        <div>
            <div id="content1">
            <script type="text/javascript">
//<![CDATA[
swfobject.embedSWF("/main_ani.swf", "content1", "530", "300", "9.0.0",
            "", {}, {wmode : "opaque"}, {});
//]]>
</script>               </div>

                <div id="content2">
                    <a href="/students/add"><img src="/img/admission_open.gif" alt="admissions" /></a><img src="/img/contact_us.gif" alt="" />  
                </div> 
            </div>

    </div>  <!--finish div content-->
    <div id="footer"> 
        &copy;  2011 Merry Flowers Montessori | Designed by VRI Web
    </div>


 </div><!--div container finish-->
</body>

</html>

ちなみに、cakephpでjqueryを使っています。ありがとうございました。

4

5 に答える 5

1

もう一度チェック。問題はjQueryファイル自体ではなく、追加されている方法にあります。.htaccessファイルに競合があるか、パスが間違って設定されている可能性があります。エラーページを読み込もうとしています。Chromeデベロッパーツールのプレビューと応答、特にjQuery.jsを読み込んだときの応答を確認してください。jQueryファイルをリクエストすると、Webサイトページが読み込まれます。正確な問題を把握するには、ビューソースではなく、実際のコードをもっと見る必要がありますが、結果としてjQueryが読み込まれません...

編集:jQueryファイルが実際に/ js /フォルダーにあり、jquery.latest.min.jsなどではなく、正確にjquery.jsという名前になっていることを確認してください。ファイル名では大文字と小文字が区別されるため、jQuery.js(大文字のQに注意)の場合は、コードの名前を変更するか、コードを変更する必要があります。また、jQueryファイルを開き、空でないことを確認します(多くの場合、jQueryを「ダウンロード」するには、ファイルをプレーンテキストとしてブラウザーで開き、すべてをコピーしてファイルに貼り付け、そのファイルを保存する必要があります)。

EDIT2:これがローカルで機能しているがリモートでは機能していない場合、2つの理由が考えられます。パブリックフォルダーの.htaccessファイルに書き換え条件がないか、構成ファイルの1つ(Apache httpd.configまたは.htaccessファイル)に/ localhost /があるか、場合によってはconfig.phpファイルに/localhost/があります。 (パブリックフォルダーのindex.phpから呼び出されます)。

Options -Indexes
RewriteEngine on
#
# Redirect all non-image and non-file requests to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?url=$1 [PT,L]

パブリックフォルダー内の.htaccessの例。パスがパブリックフォルダー内にないすべてのリクエストをリダイレクトして、代わりにインデックスファイルに移動します。

于 2012-04-16T01:59:49.240 に答える
1

最も可能性の高い答えは、jquery ファイルをリンクした方法です。

<script type="text/javascript" src="/js/jquery.js"></script>    

firebug > Scripts を確認し、jquery.js の結果を確認します。私が正しく推測した場合、404または何かを返す代わりにコードを返しjquery.jsていません。jquery

于 2012-04-13T05:36:04.700 に答える
1

CakePHP には、URL を適切に生成する機能があります。HTML Helper URLを見るのはとても簡単です。

jQuery の問題は、CakePHP とは関係ないと思います。私の推測では、jQuery ファイル リンクが無効であるか、jQuery コンテキストが壊れている可能性があります。わかりにくい。

編集:あなたのページを見た後、問題はどちらかだと思います。

  • 各 .ctp テンプレートに完全な HTML ドキュメントを追加しています。これは、default.ctp にある必要があるだけです。
  • または、現在のページ内で、Ajax を使用して完全なページを再度ロードしています。
于 2012-04-13T05:05:46.517 に答える
0

リクエストの送信方法は

$.post("../students/get_parent_info" ... );

リンクではなく、ディレクトリを横断するように見えます。段階的に機能するように見えるかもしれませんが、これを使用する必要があります。次のような直接リンクを提供する必要がある場合があります

$.post("http://domain.com/students/get_parent_info", ... );
于 2012-04-13T00:08:01.957 に答える
0

lazerblade のガイダンスでわかりました。問題が見つかりました。public_html/merry_flowers/js および www/merry_flowers/js フォルダーに jquery.js がありませんでした。これらのフォルダーに jquery.js を追加した後、jquery.js のネットワーク応答 (chrome 開発者ツールのネットワーク) でエラーが発生しなくなり、jquery.js はネットワーク内のタイプが application/javascript になります。ただし、jquery 関数はまだ機能していません。だから、私は今それを調べなければなりません。

皆さん、本当にありがとう。あなたの助けは貴重です!

于 2012-04-18T16:15:02.023 に答える