同时使用“onclick”通过ajax调用2个函数

问题描述:

我在使用AJAX时遇到了问题。我是新手,所以答案可能很简单!同时使用“onclick”通过ajax调用2个函数

所以,我有这段代码。

echo '<input type="button" onclick="opinion(1,\''.$v.'\'); op_status(1,\''.$v.'\');"/>'; 

这是用php编写的。

,它们通过onclick事件调用的2个功能,在2周不同的HTML的div切换AJAX。我得到的是第二个功能对div的结果。

任何想法,为什么会发生这种情况?

谢谢!

敬请原谅,但是这是我的第一篇文章。所以这是2个(相同的,只是不同的变量)js脚本之一。

function op_status(op,pid) 
{ 
if (op=="") 
    { 
    document.getElementById("opstatus"+pid).innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("opstatus"+pid).innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","post_op_stat_disp.php?ajxpid="+pid,true); 
xmlhttp.send(); 
} 

被调用的文件进行一些检查并输出文本,具体取决于在某个html div处的检查。另一个js脚本完全一样,在另一个html div上做一些其他测试并输出一些其他文本。 :)不过输出是在这两个的div

+1

我们展示你的Javascript代码可能是一个好主意;-) – 2011-04-17 17:15:21

+0

没有足够的信息在这里 - 请张贴(生成)JavaScript和HTML。 – 2011-04-17 17:16:09

+1

向我们展示PHP生成的HTML也会很有用 - 我不喜欢试图忽略引号并在我脑海中扩展变量。 – Quentin 2011-04-17 17:16:17

首先相同的文字呼应我要补充“变种XMLHTTP = NULL;”在你的函数的顶部 - 这将在本地范围内变量,而不是使其成为全局性的 - 就像@David Dorward指出的那样。这将最终分配第二个声明的函数中的ajax请求的响应处理程序(它恰好是第二个函数),作为两个ajax请求的响应处理程序,并且您将获得您描述的行为。

如果你仍然得到相同的文本在div中,那么我会怀疑这两个javascript函数调用post_op_stat_disp.php而不是调用我认为是post_opinion_disp.php的意见函数,因此它将相同的数据返回给每个div。或者(更不可能)post_opinion_disp和post_op_stat_disp返回相同的结果。

由于这个问题是不是真的要热尔曼AJAX反而可能是一个编码问题 - 我会建议手动导航到http:// [服务器] /post_op_stat_disp.php?ajaxid=test和您的其他网址,看看是什么应该在两个div中填充。

然后我会强烈建议你抽象的Ajax代码一些常用的功能,使你没有复制的HTTP状态代码和XMLHTTP实例化逻辑。虽然它可能无法帮助你解决这个特定的问题,它会如果您是@Jared Farrish的建议,使用jQuery的减少您的代码大小沿着这些路线的东西:



    function op_status(op, pid) { 
    if (!op) return $('#opstatus' + pid).html(""); 

    $.get('post_op_status_disp.php?ajaxid=' + pid, function(r) { 
      $('#opstatus' + pid).html(r); 
    }); 
    } 

我的钱是在VAR关键字这将确保您获得两个不同的xmlhttp对象,而不是一个全局的对象。

然而,大多数已经评论 - 你可能要发布生成的结果来帮助我们,帮助您跟踪这个开溜了。

谢谢,让我们知道结果如何!

+0

我想你会得到你的钱!非常感谢!!该变种的事情工作很棒!欢呼声 – gianniskpf 2011-04-17 19:34:41

+0

没问题,现在如果我能弄清楚在哪里撤回我所有的互联网钱... – 2011-04-17 20:49:23