非常困惑。
我有一个搜索框,可以从我的数据库中读取学校名称列表。当我选择一所学校时,id(来自数据库)被放入一个隐藏的文本框中。
我还有一个搜索框,可以从我的数据库中读取课程列表。但是,我进行了查询,以便它只读取所选学校的课程。
理论上就是这样做。
我打算将学校ID(我从隐藏的盒子中抓取)传递给搜索脚本,然后搜索脚本将其传递给我的数据库查询。但是,我把我的学校ID放入的变量似乎没有更新..但它确实如此。让我解释一下。
我来到了这个页面。我的测试帐户的学校有id 1.隐藏框中的ID号确实是1.我搜索了一所学校,我知道有一些课程分配给它:框中的ID号变为3.
我有一个名为school_id
的JS变量,我在$(document).ready
之外声明了这个变量。我认为这意味着它是全球性的(这就是我所教的内容,即使它告诉我一旦它不是真正的正确方法。仍然需要研究它)。我写了一个函数,当学校搜索框失去焦点时,它会更新这个变量:
$("#school").blur(function() {
school_id = $("#school_id").val();
});
浏览器栏中的快速javascript:alert(school_id);
也会显示更新的变量:它现在是3而不是1.
在我的页面的搜索脚本部分(脚本的摘录):
script:"/profiel/search_richting?json=true&limit=6&id=" + school_id + "&"
如您所见,我将school_id
变量传递给脚本。然而,似乎正在发生的事情是总是传递'1',这是页面加载时的默认变量。它只是忽略更新的变量。页面加载时是否解析此字符串?换句话说,只要页面加载,它是否真的说&id=1
?这是我能想出的唯一的想法,为什么它总是会传递'1'。
有没有办法在我的脚本字符串中进行此变量更新?或者解决这个问题的最佳方法是什么?像往常一样,我可能会再次错过非常简单的事情。非常感谢。
修改
根据请求更新。我按照建议添加了一个函数getTheString,并使用此函数的值来获取URL。虽然仍然无法工作,但在我有机会更新var之前,它似乎仍在连接。但是,使用此代码,我的ajax日志显示id:[object HTMLInputElement]
,而不是id:1
。不确定这意味着什么。
<script type="text/javascript">
var school_id;
$(document).ready(function() {
$("#school").blur(function() {
school_id = $("#school_id").val();
});
// zoekfunctie
var scholen = {
script:"/profiel/search_school?json=true&limit=6&",
varname:"input",
json:true,
shownoresults:false,
maxresults:6,
callback: function (obj) { document.getElementById('school_id').value = obj.id; }
};
var as_json = new bsn.AutoSuggest('school', scholen);
var richtingen = {
script: getTheString(),
varname:"input",
json:true,
shownoresults:true,
maxresults:6
};
var as_json2 = new bsn.AutoSuggest('studierichting', richtingen);
});
function getTheString() {
return "/profiel/search_richting?json=true&limit=6&id=" + school_id + "&";
}
</script>
答案 0 :(得分:0)
这是因为URL是静态的,不会随着ID的更改而更新。
您应该将URL更新为您编写的代码的一部分以获取ID:
$("#school").blur(function() {
school_id = $("#school_id").val();
// update URL here ...
});
答案 1 :(得分:0)
你是不是在事件被触发之前连接script:"/profiel/search_richting?json=true&limit=6&id=" + school_id + "&"
并且var更新了?
答案 2 :(得分:0)
好。所以问题是我的第三方插件而不是我写的代码。我通过编辑autoSuggest插件的代码修复了这个问题,现在它在AJAX请求中包含了我的id字段。
var url = this.oP.script+this.oP.varname+"="+encodeURIComponent(this.sInp)+"&id="+ $("#school_id").val();
感谢所有试图帮助我的人!