大家好。所以我正在努力研究这个简单的jQuery程序,它只在选择值发生变化时触发函数。一旦我开始工作,我计划在一个更复杂的程序中使用这个简单的函数。
这是代码(它来自jQuery API网站,我稍微修改了它以尝试我想要发生的事情):
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>change demo</title>
<style>
div {
color: red;
}
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<select id="selector" name="sweets">
<option>Chocolate</option>
<option selected="selected">Candy</option>
<option>Taffy</option>
<option selected="selected">Caramel</option>
<option>Fudge</option>
<option>Cookie</option>
</select>
<div></div>
<script>
$( "#selector" )
.on('change',(function () {
$( "select option:selected" ).each(function() {
<?php header("Location:jcue.php")?>
});
})
.change();
</script>
</body>
</html>
我想要发生的是,一旦选择输入值被更改,页面应该只重定向到jque.php。但是程序中发生的事情是它自动重定向到另一个页面,甚至没有加载当前页面本身。有什么问题? jQuery和Javascript在网络编程中对我来说是未开发的外国领域,我知道这对许多网络程序员来说都是非常基础的,但我只是需要它(当我得到它时我真的必须开始学习Javascript,AJAX和jQuery)空闲时间哈哈)。
我将要使用的复杂程序是一个搜索结果过滤程序。但在我能做到这一点之前,我必须让这个简单的程序工作。
任何人都可以帮助我吗?谢谢。答案将不胜感激。
答案 0 :(得分:3)
试试这个::
$(function() {
$("#selector").change(function() {
location.href = "jcue.php";
});
});
这将解决您的问题。
答案 1 :(得分:1)
问题是因为您的PHP会在页面加载后立即执行 - 您无法将其合并到javascript中。此外,您不需要处理程序中的each()
。试试这个:
$("#selector").on('change',(function () {
window.location.assign('jcue.php');
});
答案 2 :(得分:1)
JavaScript是客户端脚本,而PHP是服务器端。您正在尝试触发PHP标头重定向,该重定向应在服务器时间发送到客户端的浏览器之前。因此,在变更事件中,这不会起作用。
只需使用:
$("#selector").change(function() {
window.location = "jcue.php"; //this can be URL as well
});
P.S。我注意到你有两个“选中”选项,请记住为什么?
答案 3 :(得分:0)
不太好的做法:使用Javascript重定向,因为JS可以被阻止
有一些语法错误,这是一个修复,只需替换你的代码。
$( "#selector" ).on('change',(function () {
var str = "";
$( "select option:selected" ).each(function() {
window.location.replace("http://stackoverflow.com");
});
}));
良好做法:使用jquery ajax请求Jquery Ajax或使用标准php header函数重定向(必须在加载html / js之前运行)
祝你好运,学习编程。这很有趣!