0

似乎我的脚本无法调用 ajax_test.php 中的 PHP 函数。我正在尝试在更改下拉框时实现对 php 函数的调用。我的 html 页面是 index.php。代码如下。任何人都可以启发我吗?索引.php

<script>
$(document).ready(function(){
$("#cm").change( 
function ()
{
    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    //code goes here
    xmlhttp.onreadystatechange=function()
     {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            var test = $.ajax
            ({ 
            type: "POST",
            url: "ajax_test.php",
            dataType: "json",               
            }).done(function(){
                document.getElementById("box").innerHTML = xmlhttp.responseText;
            });
        }
     }
    xmlhttp.open("POST","ajax_test.php",true);
    xmlhttp.send();
});
});
</script>
<div>
<div id="box"><p>a</p></div>
<form>
<select id="cm">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
</form>

ajax_test.php

<?php
function hey(){
    echo '<p>hey</p>';
}
?>
4

3 回答 3

1

如果你使用 jquery,你应该坚持使用 jquery 函数。尝试用以下代码替换您的更改功能。

$("#cm").change( 
   function (){
    $.ajax({ 
        type: "POST",
        url: "ajax_test.php",
        dataType: "json"               
        }).done(function(data){
            $("#box").html(data);
        });
   }
 });

还要确保您发送正确的数据类型。检查服务器是否正在返回application/jsonajax 调用的响应类型。

您不仅需要定义,还需要hey()在 php 脚本中调用该函数。

于 2013-10-16T03:37:33.540 回答
0

建议:

You are trying to mix 2 ways to call ajax. I mean using XMLHttp request object & also jquery ajax. Try either one. I suggest you for jquery ajax. Tell me if you need any programming help.

- 谢谢

于 2013-10-18T08:57:41.150 回答
0

我认为您缺少图书馆。添加

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>

在脚本开始之前。这里我使用的是 1.8.3,你可以使用最新的 google 一下。

于 2013-10-16T03:42:27.197 回答