2017-02-17 51 views
0

我有一些丑陋的PHP代码,我将在稍后清理,但首先代码应该开始工作OK。现在它不执行post命令。换句话说,脚本find.php不会被执行。任何想法如何解决这个问题?我只想使用一个超链接。jQuery和PHP编写的超链接onclick

<?php 

    print "<div><div>Play " . $i . "<span><a href=\"#\" onclick=\"$.post('find.php', { 'my': '$my_id', 'your': '$your', 'select': '$i' }); $('html').css({ 'overflow': 'auto', 'height': 'auto' }); this.parentNode.style.display = 'none'; return false;\">Select</a></span></div></div>\n"; 

?> 
+4

没有试图听起来粗鲁,但可能可能清理你的代码首先会使调试更容易?代码分离并不困难。 – cteski

+0

一些建议:尝试单独使用静态HTML代码(而不是使用PHP创建的HTML)首先运行'post'。显然,PHP似乎在这里服务的唯一目的是使用'$ i','$ my'和'$ your'的值,其余的都可以是“外部”的PHP。另外,请检查控制台是否有任何错误。你在那里看到了哪些通知? –

+0

我认为它工作正常 –

回答

1

诚实地说,你现在最好清理一下你的代码。如果你检查你的控制台,你很可能会得到关于jQuery没有被加载的错误。

您应该创建所需要的信息适当的按钮:

<a href="#" class="mybutton" data-my-id="<?php echo $my; ?>" data-your-id="<?php echo $your; ?>" data-select="<?php echo $i; ?>">Select</a> 

,并创建jQuery的事件侦听器:

jQuery(document).ready(function() { 
    // handle click 
    jQuery(document).on('click', 'a.mybutton', function(e) { 
     e.preventDefault(); 
     var data = { 
      my: jQuery(this).data('my-id'), 
      your: jQuery(this).data('your-id'), 
      select: jQuery(this).data('select'), 
     } 
     //post 
     jQuery.post('find.php', data); 
     alert(data.select); 
     jQuery('html').css({ 'overflow': 'auto', 'height': 'auto' }); 
    this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.style.display = 'none'; return false; 

    }); 
}); 

从那里,你必须把它清理干净,以适应正是你所需要的。如果我是你,我会开始考虑正确的代码/路径,而不是“稍后再看”

0

看来你想动态地用超链接执行jquery post。从您的代码

function postFunc(my_id, your, i) { 
    $.post('find.php', { 
    'my': my_id, 
    'your': your, 
    'select': i 
    }); 
} 

function createDynamicDiv(my_id, your, i) 
{ 
    var node = document.createElement('div'); //dynamically creates a div 
    node.setAttribute("style", "overflow: auto; height: auto"); //set css 
    newlink = document.createElement('a'); 
    newlink.setAttribute('class', 'dynamicDiv'); //you might want to group all divs in a common class to add common css 
    newlink.setAttribute('href', 'javascript:postFunc(my_id,your,i)'); //javascript: prefix on the href makes to interpret postFunc as a javascript function 
    node.appendChild(newlink); 

} 

呼叫createDynamicDiv创建一个动态的div - 你完全可以在JavaScript本身实现这一目标。