我应该做一个动态选择框,其中医生姓名的选择取决于在另一个选择框即专业中选择的名字。
继承人的HTML
<select name="docSpec" id="docSpec" onChange="getSpecialty('getSpec.php?spec='+this.value)">
<option>pick a specialization</option>
<option value="General">General</option>
<option value="pediatrics">pediatrics</option>
<option value="Physician">Physician</option>
<option value="Cardiologist">Cardiologist</option>
<option value="Pulmonary">Pulmonary</option>
</select>
<div id="getDoc"> <!-- the contents from getSpec.php are displayed in this div! -->
<select>
<option>select doctor</option>
</select>
</div>
仍然在同一文件中,这是我的JavaScript。
function getXMLHTTP() { //fuction to return the xml http object
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getSpecialty(strURL) {
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('getDoc').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
我有一个单独的文件包含这个名为getSpec.php的请求
<?php $spec=$_REQUEST['spec']; // i converted javascript variable to php by passing it to url
require_once('dbcon.php');
$query="select doctorName from doctors where specialty= '$spec'"; // this is why i passed it with jquery
$result=mysqli_query($conn,$query);
?>
<select name="doctor">
<option>Select doctor</option>
<?php
while( $row = mysqli_fetch_row($result)) {
echo "<option value='$row[0]'>$row[0]</option>"; // for contents of the dropdown
} ?>
我通过此代码传递了javascript变量并将其转换为php,在另一页getSpec.php中,但是现在的问题是我无法从选定的<select name="docName>
。它在另一个页面名称getSpec.php中是否可以获取它?
参考方案
您的浏览器是什么?
您在处理DOM时不能依赖innerHtml。在每个浏览器上的工作方式都不同
IE处理XMLHTTPRESPONSE的方式也不同于基于Webkit的浏览器。
我认为它是“完成”或“完成”而不是4。
您用jquery标记了问题,为什么不使用此库解决问题。 $ .get和$ .ajax和$(“ some css selector”)。html('your new html')的成功处理程序是很好的工具。
编辑:我正在按要求添加更多详细信息。
如您所要求的,您可以使用下面的代码来获取select和getDoc的innerHtml :(“#” id代表id,“ [sth =?]”代表属性相等)
var old_get_doc_innerHtml = $('#getDoc').html();
var old_select_innerHtml = $('select[name="doctor"]').html();
专为您的getSpecialty(strURL)代码使用:
function getSpecialty(strURL) {
var jqxhr = $.get(strURL, function (data) {
// runs only if http fetch has succeeded.
$("#getDoc").html(data);
alert("Load was performed.");
})
.done(function () {
// another success implementation type
})
.fail(function () {
// runs only if http fetch has failed.
})
.always(function () {
// runs always both in fail and success.
});
}
好的,简短的代码简介:
$是jQuery的运算符,可以使用$.someFunction()
使用静态函数。
jQuery的元素选择器使用“ CSS选择器”字符串,语法为:$('CSS_SELECTOR')
。
通过使用它,您可以选择页面的所有“标签”标签:$('label')
或具有type ='text'$('input[type="text"]')
或更多类型的'input'标签。见API Doc selector Page
使用css_selector选择元素后,您可以运行元素特定的功能,例如html()
。
jQuery永远不会返回void,而是返回元素Object,因此我们可以在变量/ DOM元素上使用每个操作函数,而无需使用';'。我将此概念用于jqxhr
变量(内部:getSpecialty(strURL),jqxhr是方法$ .get的返回对象),在这里我将.done(...)
,.fail(...)
,.always(...)
称为jqxhr
。
我正在将订单表从数据库绘制到datatables(jquery插件)中。我要在每笔最后一笔交易或每笔交易中增加付款。问题是,如何获取单击添加付款按钮以添加付款的行的订单ID。其次,当点击addpayment时,它会弹出一个带有字段或订单号的模态表单。我想用在td中找到的订单ID填充该字段,并使其不可编辑或隐藏,但在提交模态表单时将其发布到服务器。表格和模式表…
JavaScript处理期间数组内部的数组 - javascript我正在尝试使用Ajax处理表单,并且在处理复选框时遇到了问题。我以为我可以在数组中做一个数组,将选中的框添加到数据对象中,但这似乎不起作用。它不会显示为控制台中对象的一部分或类似内容。我尝试了一些变化,但没有任何效果。这是当前的样子:var formData = { 'fname' : $('input[name=fname]&…
将简单的javascript代码转换为c# - javascript昨天我在这里问了一个问题。使用javascript和html解决方案很简单前一阵子我打算什么是操纵html来执行javascript中的任务但是我改变了主意,将javascript代码重写为c#这是输入<Abstract> <Heading>Abstract</Heading> <Para TextBreak=…
如果复选框切换复选框已选中,则在切换div中输入必填字段 - javascript我使用脚本用JavaScript切换了一些div。如果要选中复选框以显示toogle div,我想在toogle div中设置一些“必填”输入字段。有人能弄清楚吗?那是工作吗?function show(id) { if(document.getElementById) { var mydiv = document.getElementById(id); m…
在laravel中应用ajax - javascript我想在laravel 4.2中应用ajax。我想重定向到页面而不重新加载它。我已经尝试过使用window.loaction.href和window.loaction.assign了,但是它不起作用。这是我的文件Route.php //login+logout+auth Route::get('login','authentica…