Javascript ajax没有';不能在本地主机上工作

Javascript ajax没有';不能在本地主机上工作,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个简单的Ajax计算,但它不起作用 这就是JavaScript代码 <script> function showFees() { e.preventDefault(); var weight = ('weight').val; var ship_type== ('ship_type').val; var eol== ('eol').val; if (weight == 0) {

我有一个简单的Ajax计算,但它不起作用

这就是JavaScript代码

<script>


   function showFees() {
        e.preventDefault();
        var weight = ('weight').val;
        var ship_type== ('ship_type').val;
        var eol== ('eol').val;
        if (weight == 0) {
            document.getElementById("txtHint").innerHTML = "";
            return;
        } else {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
         document.getElementById("txtHint").innerHTML =this.responseText;
                }
            };
            xmlhttp.open("GET", "sdr.php?weight=" + weight "ship_type" + ship_type + "eol" + eol, true);
            xmlhttp.send();
        }
    }

我认为echo必须返回到span,ID为'txtHint',但它不会返回任何消息,如果我尝试在java脚本中添加警报,则该脚本也不起作用,我尝试添加ajax库,但也不起作用

您使用的是
e.preventDefault()但此时没有定义
e
。将其作为参数传递到按钮上:

 onclick="showFees(event)"
在函数中捕获它:

function showFees(e) {
修复错误的URL格式并对值使用encodeURIComponent:

xmlhttp.open("GET", "sdr.php?weight=" + encodeURIComponent(weight) + "&ship_type" + encodeURIComponent(ship_type) + "&eol" + encodeURIComponent(eol), true);
修复这两条不太正确的线:

var ship_type== ('ship_type').val;
var eol== ('eol').val;
应该是:

var ship_type = document.querySelector('select[name=ship_type]').value;
var eol = document.querySelector('select[name=eol]').value;

打开浏览器开发工具(F12)并查看控制台,这些问题将产生错误,这将帮助您缩小问题范围。

url有问题,您形成了一个错误的url,缺少GET请求的
=
&

应该是这样的

xmlhttp.open("GET", "sdr.php?weight=" + weight + "&ship_type=" + ship_type + "&eol=" + eol, true);
要获得输入值,应编写正确的代码:

如果您使用的是jquery

var weight = $("[name='weight']").val();
var ship_type = $("[name='ship_type']").val();
var eol = $("[name='eol']").val();
或js:

var weight = document.querySelector('input[name=weight]').value
var ship_type =document.querySelector('select[name=ship_type]').value
var eol = document.querySelector('select[name=eol]').value
也作为MrCode答案


e.preventDefault()
将引发错误,因为
e
未定义的

缺少“+”符号和“&=”符号:

xmlhttp.open(“GET”、“sdr.php?weight=“+weight”ship_type”+ship_type+“eol”+eol,true)

应该是


xmlhttp.open(“GET”、“sdr.php?weight=“+weight+””和ship_type=“+ship_type+”&eol=“+eol,true”)

到底什么不起作用?这不是对您问题的一个非常有用的描述。这是一个输入错误,请参见
+weight“ship_type”
它不会在您的控制台上提供@riggsfullyu输出,错误应该在那里…还有使用
==
ship\u type=
好的,我发现错误引用错误:showFees没有定义现在我有一个最后的问题,我在php页面中得到错误,该页面进行计算,未定义索引:ship\u type未定义索引:eol@mrcoded谢,这是一个我添加了正确的行,但它仍然没有给我任何东西你能打开网络选项卡(F12)控制台浏览器并显示好像ajax请求是sentI发现错误参考错误:showFees没有定义你在同一页或不同文件中编写js代码吗?同一页,现在我在计算sdr.php的php上有错误,但在URL中发送的所有变量在itthanks上都是未定义的,这是我在正确的行中添加的东西,但它仍然没有给我任何东西
var weight = $("[name='weight']").val();
var ship_type = $("[name='ship_type']").val();
var eol = $("[name='eol']").val();
var weight = document.querySelector('input[name=weight]').value
var ship_type =document.querySelector('select[name=ship_type]').value
var eol = document.querySelector('select[name=eol]').value