我有一个链接代码:
<?php foreach (range(0, 29) as $rs) { echo"<a href=\"open.php?&i=stone$rs;\" id=\"link\">stone$rs</a><br/>"; } ?>
在这里,我有另一个代码:
<script type="text/javascript">
var js_var = ""; //Here should be my "stone$rs"
document.getElementById("link").onclick = function () {
// ajax start
var xhr;
if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); // all browsers
else xhr = new ActiveXObject("Microsoft.XMLHTTP"); // for IE
var url = 'details.php?js_var=' + js_var;
xhr.open('GET', url, false);
xhr.onreadystatechange = function () {
if (xhr.readyState===4 && xhr.status===200) {
var div = document.getElementById('update');
div.innerHTML = xhr.responseText;
}
}
xhr.send();
// ajax stop
return false;
}
</script>
我想要做的就是以某种方式连接我的链接$ i值与javascript中的js_var。你能告诉我它是如何完成的吗? 或者你能告诉我如何使用ajax和jquery吗? 如果你ca,请告诉我如何在模态对话框中打开每个链接。请。 感谢。
答案 0 :(得分:1)
var jsvar = <?php echo json_encode($i); ?>;
或尝试Jquery和AJAX
答案 1 :(得分:1)
不要将其视为“链接变量”或以任何方式将其视为JavaScript和PHP交互。 JavaScript和PHP是完全独立的,一个是服务器端,另一个是客户端。服务器端代码(PHP)呈现包含JavaScript的客户端文档。
鉴于这种分离,向JavaScript代码发出值与将它们发布到HTML没有什么不同。同样的模式成立:
some client-side stuff
<?php echo some server-side stuff ?>
more client-side stuff
结果最终成为:
some client-side stuff
the result of some server-side stuff
more client-side stuff
“东西”是什么并不重要。它构建HTML文档时都是字符串。因此,假设您为HTML发出一个值:
<div>
<?php echo $variable; ?>
</div>
与JavaScript相同:
var something = someFunction();
<?php echo $variable; ?>
something.doSomething();
服务器端的东西只是将文本注入到生成的客户端内容中。互动是你想要的。如:
<script>
var someVariable = <?php echo $aNumber; ?>;
</script>
这可能会导致类似:
<script>
var someVariable = 5;
</script>
或许你有一个字符串可以回应,在这种情况下,客户端代码需要引号才能知道它是一个字符串:
<script>
var someVariable = "<?php echo $aString; ?>";
</script>
这可能会导致类似:
<script>
var someVariable = "Hello world";
</script>
基本上,PHP代码只是将文本字符注入输出。想想您希望输出的外观,并在适当的位置注入文本字符。
答案 2 :(得分:0)
您将需要一种不同的方式来实际选择您尝试从中获取文本的元素/元素。现在你有一堆没有类或id的锚。您不能使用document.getElementById来选择没有id的元素。就像你上面的代码一样。您需要调整您的php以回应类似:
echo"<a class="link" href=\"open.php?&i=stone$rs;\">stone$rs</a>";
然后,如果您使用的是像jQuery这样的库,则可以通过以下方式选择节点:
$('.link').on('click', function(){
var linkValue = $(this).text();
//your ajax here
});
或:
echo"<a href=\"open.php?&i=stone$rs;\">stone$rs</a>";
//as long as you only have these anchors on the page
//but I would suggest a more specific selection like above
$('a').on('click', function(){
var linkValue = $(this).text();
//your ajax here
});
答案 3 :(得分:0)
在数据属性中使用变量:
<?php
foreach (range(0, 29) as $rs) {
echo"<a href='open.php?&i=stone$rs;' class='link' data-rs='stone$rs'>stone$rs</a><br/>";
}
?>
然后在js:
<script type="text/javascript">
var links = document.getElementsByClassName("link"),
linksLength = links.length,
i;
for (i = 0; i < linksLength; i++) {
links[i].onclick = function () {
var js_var = this.getAttribute('data-rs');
// ajax start
var xhr;
if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); // all browsers
else xhr = new ActiveXObject("Microsoft.XMLHTTP"); // for IE
var url = 'details.php?js_var=' + js_var;
xhr.open('GET', url, false);
xhr.onreadystatechange = function () {
if (xhr.readyState===4 && xhr.status===200) {
var div = document.getElementById('update');
div.innerHTML = xhr.responseText;
}
}
xhr.send();
// ajax stop
return false;
}
}
</script>