ajax怎么就跳转了呢? 本帖最后由 lhl2lhf3 于 2011-06-16 21:54:53 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题我以前遇到过,最后解决了,问题不是在于ajax,而是你的js里有错误,导致ajax工作不正常,而且还不报告js错误.所以请仔细查看一下你的js哪里写错了. 你可以用屏蔽法找出问题来,把那些与该ajax操作无关的js代码一行一行的逐步注释掉,然后不断刷新浏览器测试,一会你就能找出是哪里的代码写错了. 同样的ajax函数在其他地方用的时候正常吗?你把其他地方能够正常使用的代码拿到这里来试试正常吗?可能被鬼打墙了 正常啊。。这段就是:用的好好的,但是到黄色区域里面的提交数据以后,一点击,就跳转了。。 function show(id){ var url = '<{$app}>/twitter/showreply/id/'+id; if($("#a_"+id).html().length > 0 ){ $("#a_"+id).html(''); }else{ $.get(url,function(data){ $("#a_"+id).html(data); }) } }; //用get方法發送數據到test.php,同時傳遞兩個參數,回調函數顯示服務器的輸出內容,php端用$_POST["name"]取得參數$.ajax({ type:"get",url:"test.php", data:"name=風景&location=Boston", success:function(msg){ alert(msg); }});试试这个方法 注视的错误,修改了一下,你试过吗,行吗//用get方法發送數據到test.php,同時傳遞兩個參數,回調函數顯示服務器的輸出內容,php端用$_GET["name"]取得參數$.ajax({type:"get",url:"test.php",data:"name=風景&location=Boston",success:function(msg){alert(msg);}});-------------------//用post方法發送數據到test.php,同時傳遞兩個參數,回調函數顯示服務器的輸出內容,php端用$_POST["name"]取得參數$.ajax({ type:"POST",url:"test.php", data:"name=風景&location=Boston", success:function(msg){ alert(msg); }}); 把 $.get(url,function(data){ alert(data); $("ul").html(data); })替换成$.ajax({type:"get",url:url,success:function(msg){ alert(msg); $("ul").html(msg);}}); 照样跳,没经过你发的那个函数。好像$.get()方法根本没有执行到。。 我把部分代码修改了一下,你用我的代码试试<span id="reply"><a href="#" onclick="$.show(<{$data[ls].tid}>)">回复(<{$data[ls].replynum}>)</a></span><div style="background:yellow;margin-top:10px;" id="a_<{$data[ls].tid}>"></div>ajax是:<script>(function($){ $.show = function(id){ var url = '<{$app}>/twitter/showreply/id/'+id; alert(url);//看看這裡是否執行 if($("#a_"+id).html().length > 0 ){ alert('111');//看看這裡是否執行 $("#a_"+id).html(''); }else{ alert('222');//看看這裡是否執行 $.get(url,function(data){ $("#a_"+id).html(data); }) } };})(jQuery)</script> 这一部分的代码是没有问题的,可以执行。。就是模板里面的那个 ajax,不能执行。。代码是这块~~<script src="<{$root}>/public/js/jquery.js"></script><script> function show1(id){ var url = '<{$app}>/twitter/showreply/id/'+id; alert(url); $.get(url,function(data){ alert(data); $("ul").html(data); }) }</script><ul> <{section loop=$data name="ls"}> <li> <input type="hidden" name="tid" value="<{$data[ls].tid}>"> #######<{$data[ls].content}>###### </li> <{/section}></ul><form action="<{$url}>/insertreply/id/<{$id}>" method="post"> <div><textarea cols="60" rows="2" name="content"></textarea></div> <div> <input type="hidden" name="name" value="<{$smarty.session.username}>"> <center><input type="submit" onclick="show1(<{$id}>)" name="sub" value="提交"></center> </div></form> 1、<a href="javascript:show(<{$data[ls].tid}>)">回复你使用 a 标记提交,这必然导致打开新窗口正确的写法是<a href="javascript:void(null)" onclick="show(<{$data[ls].tid}>)">回复或<a href="#" onclick="show(<{$data[ls].tid}>)">回复其实直接使用按钮更好,也不必再伪装成按钮了<iuput type=button onclick="show(<{$data[ls].tid}>)" value=回复>2、你的模板引擎是什么?看上去像是 Smarty 如果是,那么默认是不处理 JavaScript 标记中的模板元素的 谁有这个php_w32api.dll给我发一份 谢谢啊 mysql分组查询金额如何同时查询全部总金额? 请教高手:关于更改php服务器80端口的疑难问题? 一个有关分页的问题! 为什么我的mysql保存不了中文? 关于信息发布(内外网同步) PHP能否读取其它语言创建的Cookie或Session? PHPed Web Server的问题 离开TEXT表单即计算的问题? 如何提取qq中根据ip判断地区的数据?或通过其他办法得到这样的数据? 请教一个正则表达式的问题 关于mysql中时间比较的问题
所以请仔细查看一下你的js哪里写错了.
你把其他地方能够正常使用的代码拿到这里来试试正常吗?
可能被鬼打墙了
var url = '<{$app}>/twitter/showreply/id/'+id; if($("#a_"+id).html().length > 0 ){
$("#a_"+id).html('');
}else{
$.get(url,function(data){
$("#a_"+id).html(data);
})
}
};
$.ajax({
type:"get",url:"test.php",
data:"name=風景&location=Boston",
success:function(msg){
alert(msg);
}
});试试这个方法
$.ajax({
type:"get",url:"test.php",
data:"name=風景&location=Boston",
success:function(msg){
alert(msg);
}
});-------------------//用post方法發送數據到test.php,同時傳遞兩個參數,回調函數顯示服務器的輸出內容,php端用$_POST["name"]取得參數
$.ajax({
type:"POST",url:"test.php",
data:"name=風景&location=Boston",
success:function(msg){
alert(msg);
}
});
$.get(url,function(data){
alert(data);
$("ul").html(data);
})
替换成
$.ajax({
type:"get",url:url,
success:function(msg){
alert(msg);
$("ul").html(msg);
}
});
<div style="background:yellow;margin-top:10px;" id="a_<{$data[ls].tid}>"></div>ajax是:
<script>
(function($){
$.show = function(id){
var url = '<{$app}>/twitter/showreply/id/'+id;
alert(url);//看看這裡是否執行 if($("#a_"+id).html().length > 0 ){
alert('111');//看看這裡是否執行
$("#a_"+id).html('');
}else{
alert('222');//看看這裡是否執行
$.get(url,function(data){
$("#a_"+id).html(data);
})
}
};
})(jQuery)
</script>
<script src="<{$root}>/public/js/jquery.js"></script>
<script>
function show1(id){
var url = '<{$app}>/twitter/showreply/id/'+id;
alert(url);
$.get(url,function(data){
alert(data);
$("ul").html(data);
})
}
</script><ul>
<{section loop=$data name="ls"}>
<li>
<input type="hidden" name="tid" value="<{$data[ls].tid}>">
#######<{$data[ls].content}>######
</li>
<{/section}>
</ul><form action="<{$url}>/insertreply/id/<{$id}>" method="post">
<div><textarea cols="60" rows="2" name="content"></textarea></div>
<div>
<input type="hidden" name="name" value="<{$smarty.session.username}>">
<center><input type="submit" onclick="show1(<{$id}>)" name="sub" value="提交"></center>
</div>
</form>
<a href="javascript:show(<{$data[ls].tid}>)">回复
你使用 a 标记提交,这必然导致打开新窗口
正确的写法是
<a href="javascript:void(null)" onclick="show(<{$data[ls].tid}>)">回复
或
<a href="#" onclick="show(<{$data[ls].tid}>)">回复
其实直接使用按钮更好,也不必再伪装成按钮了
<iuput type=button onclick="show(<{$data[ls].tid}>)" value=回复>2、你的模板引擎是什么?看上去像是 Smarty
如果是,那么默认是不处理 JavaScript 标记中的模板元素的