可以';t使用php运行ajax


Can't run ajax with php

我是php和ajax的新手。我想用php运行ajax的简单代码,但代码没有按预期工作。我想在发生更改时在页面中加载一些文本

源代码ajax.php

<select id='mySelect' onChange="MyFunction()">
    <option value='option1'>Option1</option>
    <option value='option2'>Option2</option>
    <option value='option3'>Option3</option>
</select>


<script>
function MyFunction()
{
    var params="myName=2";
    var xmlHttp;
    if(window.XMLHttpRequest)
        xmlHttp=new XMLHttpRequest();
    else
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    xmlHttp.open("GET","edittest.php",true);
    if(xmlHttp)
    {
    xmlHttp.onreadystatechange=function(){
        if(xmlHttp.readyState==4 && xmlHttp.status==200)
        {
            alert(document.getElementById('mySelect').value);
            }
        }
    }
    xmlHttp.send(params);
    }
</script>

edittest.php源代码

<?php
if(isset($_GET))
{
    for($i=0;$i<1000;$i++)
    {
        echo($_GET['myName']);
        }
    }
?>

为了获得更简单的体验,我建议您使用jQuery AJAX。这是代码。查看文档以了解更多详细信息。

function MyFunction()
{
    var myName=2;
$.ajax({
    url: "/edittest.php",
    data: {
        myName: myName
    },
    type: "GET",
    success: function(response){
        console.log(response);
    }
});
}

您的问题是,您声明了var params="myName=2";,但从未使用过它。您的脚本可以工作,但由于它只是请求edittest.php,它不会向您显示任何内容,因为您的PHP脚本只打印出myName变量。

您应该在请求的末尾添加如下参数:

<select id='mySelect' onChange="MyFunction()">
    <option value='option1'>Option1</option>
    <option value='option2'>Option2</option>
    <option value='option3'>Option3</option>
</select>
<script>
    function MyFunction() {
        var params = "myName=2";
        var xmlHttp;
        if (window.XMLHttpRequest)
            xmlHttp = new XMLHttpRequest();
        else
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        xmlHttp.open("GET", "edittest.php?" + params, true);
        if (xmlHttp) {
            xmlHttp.onreadystatechange = function () {
                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    alert(document.getElementById('mySelect').value);
                }
            }
        }
        xmlHttp.send(params);
    }
</script>

(注意xmlHttp.open("GET", "edittest.php?" + params, true);部分。)