我一直在使用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值我尝试了很多东西但是找不到解决方案。
答案 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;
}
尝试一次。感谢。