2012-06-08 5 views
1

Для уточнения:Печать переменная JavaScript в PHP эхо

У меня есть эхо заявление следующим образом:

$striptitle .= ' - <a onclick="getnewurl();" href="'.SGLink::album($aid). '">'. $namek .'</a></h1> 
<a href="https://twitter.com/share" class="twitter-share-button" data-lang="en" data-via="jb_thehot" data-text="Pictures of '. $hashfinal .'" teens>Tweet</a> 
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>'; 

echo $striptitle ; 

OnClick делает это:

<script type="text/javascript"> 
function getnewurl() 
{ 
var url = document.URL; 
alert(url); 
} 
</script> 

Что мне нужно существенно добавьте мой якорный тег data-url = "INSERT_VAR_URL_HERE"

Возможно ли это?

Дайте мне знать, если это еще недостаточно ясно Спасибо!

Редактировать: уточнить, предупреждение в функции предназначено только для тестирования. Мне нужно, чтобы иметь возможность использовать переменную, полученную в функции, в той же переменной $ striptitle.

Моя проблема заключается в том, что URL-адрес изменяется с помощью AJAX, а URL-адрес кнопки twitter не обновляется. Я надеялся получить новый url, получая его каждый раз, когда его щелкают. Если есть другие способы сделать это, я открыт для предложений!

+0

Я не 100% уверен, что вы пытаетесь достичь, почему вам необходимо установить атрибут 'данными url'? – tobyodavies

+0

Только что отредактировал мой вопрос, дайте мне знать, если это недостаточно ясно! – Sherif

+0

то, что вы описали в первой части вашего редактирования, звучит совершенно явно. Вы хотите использовать переменную JS, которая существует только на клиенте, и только после того, как php завершил выполнение в php, запущенном на сервере. Чтобы делать то, что вам нужно, потребуется машина времени. – tobyodavies

ответ

0

Почему бы не передать это как аргумент?

$striptitle .= " - <a onclick=\"getnewurl('URL-HERE');\"...>"; 

Тогда в сценарии:

<script> 
    function getnewurl(url) { 
     alert(url); 
    } 
</script> 
+0

Я должен был упомянуть @Kolink, предупреждение предназначено только для тестирования и уходит. Разве мне не нужно будет устанавливать переменную url с document.URL в моей функции? – Sherif

+0

Тогда как бы передать его в data-text = "variablehere"? – Sherif

+1

Передайте 'this' в качестве аргумента, а затем получите его атрибут с' getAttribute ("data-text") '. –

0

Опираясь на @ ответ один путь Kolink, чтобы не повторять URL в двух местах, вы можете создать ссылку как:

<a onclick="getnewurl(this);" href="..."> 

, то ваш JS может выглядеть так:

function getnewurl(link) { 
    link.setAttribute('data-url', location.href); 
} 

EDIT, по-видимому jQuery.data не обновляет DOM должным образом, но SetAttribute делает

+0

Спасибо, но это не совсем моя проблема, я думаю.Я уточнил мой вопрос для дальнейшего уточнения! – Sherif

+0

Еще раз спасибо за обновления, данные-url, похоже, вообще не обновляются:/Все это было попыткой исправить мою главную проблему; люди перемещаются от исходного URL-адреса, используя AJAX, поэтому счетчик твитов и url по-прежнему используют исходный URL-адрес, а не обновленный. Есть идеи по этому поводу? – Sherif

+0

этот код должен исправить это для вас --- 'data-url' будет обновлен в DOM. (хотя, очевидно, исходный html не изменится, но это не имеет значения) – tobyodavies

Смежные вопросы