在PHP代码中使用javascript变量

时间:2014-02-12 07:33:53

标签: javascript php joomla

我一直在使用joomla中的表单提交,并且在使用php JRoute _的

时使用javascript变量时出现了一些问题

以下是代码段:

function ValidateForm()
{
    var loc = $("#locality").val();
    var action = '<?php echo JRoute::_('index.php?option=com_add&view=malllists&Itemid=233&districtname='.$dit.'&loc='Pass javascript Variable Here) ;?>';
    document.miniSurveyView481.action = action;
}

在Pass的位置javascript变量在这里我需要传递loc值我尝试了很多东西但是找不到解决方案。

4 个答案:

答案 0 :(得分:6)

你不能在php代码中使用javascript变量。 Php代码在服务器端运行,javascript代码在客户端运行。你不能要求浏览器运行php代码。

只有当代码到达浏览器时,您的变量loc才会有值。

如果您想从服务器获取一些值并将其与javascript变量结合使用,请执行以下操作。

使用ajax请求并将所需的值发送到服务器。服务器将返回响应。使用该响应文本并将其存储在您的操作变量中。

答案 1 :(得分:0)

function ValidateForm()
{
    var loc = $("#locality").val();
    var action = <?php echo json_encode(JRoute::_('index.php?option=com_add&view=malllists&Itemid=233&districtname=' . $dit));?>';
    // Now action is the url  you want, but you need to add loc to it. 
    // If it already has a query string, do it like this:
    document.miniSurveyView481.action = action + '&loc=' + loc;
    // If it does not have a query string, do it like this:
    document.miniSurveyView481.action = action + '?loc=' + loc;
}

所以真正的问题是,“你如何确定网址是否已经有了查询字符串?”

您可能想尝试这样做:http://medialize.github.io/URI.js/

答案 2 :(得分:0)

在Joomla Standard中你必须尝试这样的事情。

从您的代码中,您尝试从JavaScript设置表单的操作。

在Joomla中,你必须创建隐藏的字段来设置那些url params。

<input type='hidden' name='option' value='com_add' />
<input type='hidden' name='view' value='malllists' />
<input type='hidden' name='controller' value='malllists' />
<input type='hidden' name='task' value='yourtaskname' />

在表单提交上正确设置这些内容后,Joomla会将数据发布到包含controller的{​​{1}}文件中。 可以使用普通的JavaScript / Jquery从JavaScript轻松更改这些变量值。

然后就不需要在JavaScript中使用PHP代码了。

希望它有意义......

答案 3 :(得分:-8)

我认为 $ dit 也是 php变量。尝试使用以下内容: -

function ValidateForm()
{
    var loc = $("#locality").val();
    var url = "index.php?option=com_add&view=malllists&Itemid=233&districtname=<?php echo $dit;?>&loc="+loc;
    var action = "<?php echo JRoute::_(url) ;?>";
    document.miniSurveyView481.action = action;
}

修改: -

将javascript值传递给php函数我在下面做: -

<script type="text/javascript">
function test()
{
    var pt = 3;
    document.write('<?php add("'+pt+'");?>');
}

test();
</script>

<?php

function add($param)
{
    echo $param;
}  
?>

它完美打印 3

以下代码可能适用于OP: -

function ValidateForm()
{
    var loc = $("#locality").val();
    var url = "index.php?option=com_add&view=malllists&Itemid=233&districtname=<?php echo $dit;?>&loc="+loc;
    var action = '<?php echo JRoute::_("'+url+'") ;?>';
    document.miniSurveyView481.action = action;
}

尝试一次。感谢。