如何从另一个页面获取价值

时间:2014-09-29 10:09:04

标签: javascript php jquery html url

我应该制作一个动态选择框,其中医生姓名的选择取决于在另一个选择框中选择哪一个,即专业。

继承人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的 this

<?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>。它在另一个页面名称getSpec.php有没有办法得到它?

1 个答案:

答案 0 :(得分:1)

你的浏览器是什么? 在操作DOM时你不能依赖innerHtml。每个浏览器的工作方式不同, IE也比基于webkit的浏览器处理XMLHTTPRESPONSE更加不同。 我认为它已经完成了#34;或者&#34;完成&#34;而不是4。

您使用jquery标记了您的问题,为什么不使用此库来解决您的问题。 $ .get和$ .ajax以及$(&#34;某些css选择器&#34;)的成功处理程序.html(&#39;你的新html&#39;)是很好的工具。

修改:我按照要求添加了更多详细信息 如你所知,你可以使用下面的代码获取select&amp;的innerHtml getDoc :(&#39;#&#39; id为id和&#39; [sth =?]&#39;属性相等)

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的元素选择器使用了一个&#39; CSS Selector&#39;字符串和语法是:$('CSS_SELECTOR')
通过使用它,您可以选择所有标签&#39;您网页的标记:$('label')或&#39;输入&#39;标签类型为&#39; text&#39; $('input[type="text"]')或更多。见API Doc selector Page

使用css_selector选择元素后,您可以运行元素特定的函数,如html()。 jQuery永远不会返回void,而是返回元素Object,因此我们可以在变量/ DOM元素上使用每个操作函数,而无需使用&#39 ;;&#39;。我将这个概念用于jqxhr变量(里面:getSpecialty(strURL),jqxhr是方法$ .get的返回对象),我调用了.done(...).fail(...),{{1} } .always(...)