我的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">
我尝试了不同的doctypes,但我仍然遇到了同样的错误。
我在下一行收到“$ 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">
© 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 & 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">
© 2011 Merry Flowers Montessori | Designed by VRI Web
</div>
</div><!--div container finish-->
</body>
</html>
顺便说一句,我正在使用带有cakephp的jquery。谢谢。
答案 0 :(得分:1)
CakePHP有一个功能,它将很好地生成其URL。它非常易于使用 见HTML Helper URL。
我认为你的jQuery问题与CakePHP无关。 我的猜测是你的jQuery文件链接无效或你的jQuery上下文被破坏。很难说。
编辑:看到你的页面后,我猜测问题是。
答案 1 :(得分:1)
最可能的答案可能是您链接jquery文件的方式。
<script type="text/javascript" src="/js/jquery.js"></script>
检查萤火虫&gt;脚本,看看jquery.js的结果是什么。如果我猜对了,jquery.js
没有返回jquery
代码,而是返回404或其他内容。
答案 2 :(得分:1)
再次检查。问题不在于jQuery文件本身,它与添加方式有关,可能是.htaccess文件存在冲突,或者路径设置错误。它正在尝试加载错误页面。查看Chrome开发者工具中的预览和响应,特别是加载jQuery.js时的响应。您在请求jQuery文件时加载了网站页面。我需要看到更多的实际代码,而不是视图源,以便找出确切的问题,但结果是jQuery没有加载......
编辑:检查你的jQuery文件是否确实在/ js /文件夹中,并且它的名称恰好是jquery.js,而不是jquery.latest.min.js或其他类似的东西。文件名区分大小写,因此如果它是jQuery.js(注意大写Q),则需要重命名或更改代码。同时打开jQuery文件并确保它不为空(通常“下载”jQuery需要在浏览器中以纯文本格式打开文件,复制全部文件,粘贴到文件中,并保存该文件)。
EDIT2:如果这是在本地但不是远程工作,有两个可能的原因。您要么丢失公用文件夹中的.htaccess文件中的重写条件,要么在您的某个配置文件中有/ localhost /,无论是apache httpd.config还是.htaccess文件,或者可能在config.php文件中(从公共文件夹中的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示例,用于将路径不在公用文件夹中的所有请求重定向到索引文件中。
答案 3 :(得分:0)
您发送请求的方式是
$.post("../students/get_parent_info" ... );
这似乎更像是目录遍历而不是链接。即使它似乎在一个阶段工作,你应该使用它。您可能需要提供
之类的直接链接$.post("http://domain.com/students/get_parent_info", ... );
答案 4 :(得分:0)
好了lazerblade的指导,我发现了问题,在public_html / merry_flowers / js和www / merry_flowers / js文件夹中没有jquery.js。现在将jquery.js添加到这些文件夹中后,我在jquery.js的网络响应(chrome开发人员工具的网络)中没有出现任何错误,jquery.js在网络中的类型为application / javascript。但是,我的jquery函数还没有工作。所以,我现在必须调查一下。
感谢你们所有人。你的帮助是无价的! p>