2017-02-17 3 views
0

У меня есть уродливый PHP-код, который я буду очищать позже, но сначала код должен начать работать нормально. Теперь он не выполняет команду post. Другими словами, скрипт find.php не будет выполнен. Есть идеи, как решить эту проблему? Я просто хотел бы использовать одну гиперссылку.jQuery и гиперссылка onclick, написанная PHP

<?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

Несколько предложений: попробуйте запустить 'post' сначала со статическим HTML-кодом (а не с HTML, созданным с использованием PHP). По-видимому, единственной целью 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

Кажется, вы хотите динамически создавать divs с помощью гиперссылок, выполняющих jquery post. Вы можете достичь этого полностью в самом JavaScript -

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.