2014-01-29 52 views
1

我是javascript新手。这个问题是为了提高我对JavaScript的理解。如果使用get或post或request函数加载页面,传递变量可能很容易。 如何在不加载页面的情况下在php和javascript之间传递变量? 让我们说我有这样的代码在php和javascript之间传递变量而无需加载页面

<body> 
    <input type='hidden' name='textOption' id='mytext' /><br/> 
    <?php 
     // Get the value from <input type=hidden ....> from javascript to set as other    variable 
     // For example but not logic 
     // $variableFromJS = document.getElementById('textOption').value; 
    ?> 
    <select id="optionValue"> 
     <option value='none'>--Select--</option> 
     <option value="first">First</option> 
     <option value="second">Second</option> 
     <option value="third">Third</option> 
    </select> 
    <script type="text/javascript"> 
    var optionValue = document.getElementById('optionValue'); 

    optionValue.onchange = function() { 
     document.getElementById('textOption').value = optionValue.value; 
    } 
    </script> 
</body> 
+1

你不能,因为基本的观点是,你的PHP代码在任何HTML或Javascript之前执行。如果您需要将一些数据传递给PHP而无需重新加载页面,则可以使用AJAX进行搜索,这不是很难使用。 –

+1

你能澄清你在这里试图做什么吗? 您正在寻找的概念被称为AJAX。这是一种使用客户端(Javascript)代码向服务器传递信息和从服务器传递信息的方法。 –

回答

3

其可能通过Ajax调用JavaScript中,

<script type="text/javascript"> 
var optionValue = document.getElementById('optionValue'); 

optionValue.onchange = function() { 
    document.getElementById('textOption').value = optionValue.value; 

    var xmlhttp=new XMLHttpRequest(); 
    xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     document.getElementById("textOption").value = xmlhttp.responseText; 
    } 
    } 
    xmlhttp.open("GET","some_page.php",true); 
    xmlhttp.send(); 
} 
</script> 

true - > async为falsetrue

some_page.php取这个值,并执行你的行动因此

如果您想了解更多的AJAX在JavaScript,你可以参考javascript ajax w3schools

+0

那么如何将该值传递给PHP中的变量?对不起,我没有明白。 –

+1

编辑此函数为'xmlhttp.open(“POST”,“some_page.php?q =”+ variable_name,true);' 和php函数 '$ _REQUEST [“q”];' 使用此代码获取变量的值, 使用echo来查看q的值 –

0

你的问题还不清楚,但是从我了解的基础上,你想得到隐藏字段的值,它将成为选择框的选定值。我对吗?

所以,你可以做,

//in your html 
<input type = "text" value = "first" id = "mytext"> 


var hidden_field = $('#mytext').val(); 
$('#optionValue option[value="first"]').attr('selected', true); 

忽略此,如果我错过了问题的概念

+1

根本没有,OP实际上想要通过隐藏变量将'option'值传递给PHP。 –

+0

我没有得到正确的问题,为什么投票呢?我确实有这条线'如果我在我的答案中错过了问题的概念,请忽略这一点。 – HTTP

+0

反对票不是我的,我只是简单地向你解释。 –

0

您可以使用jQuery AJAX内嵌乌尔PHP脚本...

$.ajax({ 
    url: 'www.example.com/delete_post/<?php echo $post_id; ?>'; 
}).done(function() { 
    //do some html manipulation here if u want... 
});