[英]how to get value from another page
我應該做一個動態選擇框,其中醫生姓名的選擇取決於在另一個選擇框即專業中選擇的名字。
繼承人的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變量並將其轉換為另一頁getSpec.php中的 php,但現在的問題是我無法從所選的<select name="docName>
獲取值。有辦法可以得到嗎?
您的瀏覽器是什么? 您在處理DOM時不能依賴innerHtml。 它在每種瀏覽器上的工作方式都不同,IE與基於Webkit的瀏覽器對XMLHTTPRESPONSE的處理方式也不同。 我認為它是“完成”或“完成”而不是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文檔選擇器頁面
使用css_selector選擇元素后,您可以運行特定於元素的函數,例如html()
。 jQuery永遠不會返回void,而是返回元素Object,因此我們可以在變量/ DOM元素上使用每個操作函數,而無需使用';'。 我將這個概念用於jqxhr
變量(內部:getSpecialty(strURL),jqxhr是方法$ .get的返回對象),在這里我稱為.done(...)
.fail(...)
和.always(...)
的jqxhr
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.