如何将链接变量连接到javascript?

时间:2014-01-03 20:54:09

标签: javascript php variables

我有一个链接代码:

<?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,请告诉我如何在模态对话框中打开每个链接。请。 感谢。

4 个答案:

答案 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>