Javascript ajax没有';不能在本地主机上工作
我有一个简单的Ajax计算,但它不起作用 这就是JavaScript代码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) {
<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