0

我的 jquery ajax 代码在我的本地服务器上运行良好。但是,它不适用于远程服务器 justhost.com。这让我发疯了。:( 有人可以指出我哪里出错了吗?

Merry Flowers是我网站的链接。当您打开 firebug 访问网站时,您将能够看到以下提到的错误。

当我尝试使用 firebug 进行调试时,出现以下 2 个错误:

我在以下行收到语法错误:

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

我尝试了不同的文档类型,但仍然遇到相同的错误。

我在以下行收到“$ 未定义错误”:

$(document).ready(function(){

谷歌浏览器开发者工具的错误:

    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>

顺便说一句,我正在使用 jquery 和 cakephp。谢谢你。

4

5 回答 5

1

CakePHP 有一个特性,它可以很好地生成它的 url。使用HTML Helper URL非常容易。

我相信您的 jQuery 问题与 CakePHP 无关。我的猜测可能是您的 jQuery 文件链接无效或您的 jQuery 上下文已损坏。很难说。

编辑:看到你的页面后,我猜测问题是要么。

  • 您正在将完整的 HTML 文档添加到每个 .ctp 模板中。这只需要在default.ctp中
  • 或者,您在当前页面中再次使用 Ajax 加载完整页面。
于 2012-04-13T05:05:46.517 回答
1

最可能的答案可能是您链接 jquery 文件的方式。

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

检查 firebug > Scripts 并查看 jquery.js 的结果是什么。如果我猜对了,jquery.js不是返回jquery代码而是返回 404 或其他内容。

于 2012-04-13T05:36:04.700 回答
1

再检查一遍。问题不在于 jQuery 文件本身,而在于它被添加的方式,可能是 .htaccess 文件有冲突,或者路径设置错误。它正在尝试加载错误页面。查看 Chrome 开发者工具中的预览和响应,特别是加载 jQuery.js 时的响应。当您请求 jQuery 文件时,您正在加载您的网站页面。我需要查看更多实际代码,而不是查看源代码,以便找出确切的问题,但结果是 jQuery 没有加载......

编辑:检查您的 jQuery 文件是否确实在 /js/ 文件夹中,并且它的名称完全是 jquery.js,而不是 jquery.latest.min.js 或类似的东西。文件名区分大小写,因此如果是 jQuery.js(注意大写 Q),您需要重命名或更改代码。还要打开 jQuery 文件并确保它不为空(通常“下载”jQuery 需要在浏览器中以纯文本格式打开文件、复制所有文件、粘贴到文件中并保存该文件)。

EDIT2:如果这是在本地工作但不是在远程工作,有两个可能的原因。您要么在公共文件夹中的 .htaccess 文件中缺少重写条件,要么在您的配置文件之一(apache httpd.config 或 .htaccess 文件,或者可能在 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 回答
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 回答