Javascript I';我正在尝试使用Ajax将数据发送到另一个页面
好吧,这有点复杂,我不明白为什么这不起作用。我正在尝试创建一个页面,其中包含一些文本框和下拉框列表,以及使用easyui的数据网格(这部分工作得很好)。我要做的是,当我在一个dropbox列表中选择某个内容时,我要做两个操作:将一些信息发送到另一个php页面以写入数据库,以及更改datagrid的列。这几乎奏效了。我在数据库中写入,但每个值都为null,并且我的列也会更改 因此,我的液滴列表是这样的:Javascript I';我正在尝试使用Ajax将数据发送到另一个页面,javascript,php,jquery,html,Javascript,Php,Jquery,Html,好吧,这有点复杂,我不明白为什么这不起作用。我正在尝试创建一个页面,其中包含一些文本框和下拉框列表,以及使用easyui的数据网格(这部分工作得很好)。我要做的是,当我在一个dropbox列表中选择某个内容时,我要做两个操作:将一些信息发送到另一个php页面以写入数据库,以及更改datagrid的列。这几乎奏效了。我在数据库中写入,但每个值都为null,并且我的列也会更改 因此,我的液滴列表是这样的: 函数changecolumn(){ //这些是我在文本框/下拉框列表中的数据 变量头数据={
函数changecolumn(){
//这些是我在文本框/下拉框列表中的数据
变量头数据={
'date':$('input[name=date]')。val(),
“日落”:document.getElementById(“日落”).value,
'sunrise':$('input[name=sunrise]')。val(),
'moonset':$('input[name=moonset]')。val(),
“月亮升起”:$(“输入[name=moonrise]”)。val(),
'moonphase':$('input[name=moonphase]')。val(),
“仪器”:选定的仪器,
'obsname':$('input[name=obsname]')。val(),
'astroresp':$('input[name=astroresp]')。val(),
'techname':$('input[name=techname]')。val()
};
//在这里尝试使用ajax。
$.ajax({
url:“test.php”,
方法:“张贴”,
数据:“headerData”,
//数据:{sunset:document.getElementById('sunset')。值,sunrise:document.getElementById('sunrise')。值,月集:document.getElementById('moonrise')。值,moonphase:document.getElementById('moonphase')。值,工具:selectedInstrument,obsname:document.getElementById('obsname')).value,astroresp:document.getElementById('astroresp')。value,techname:document.getElementById('techname')。value},
成功:功能(数据){
警报(“数据已成功捕获”);},
})
//使用done承诺回调
.完成(功能(数据){
//将数据记录到控制台,以便查看
控制台日志(数据);
//这里我们将处理错误和验证消息
});
//对于我的DATAGRID,这部分正在工作
var listInstrument=document.getElementById(“仪器”);
var selectedInstrument=listInstrument.options[listInstrument.selectedIndex].text;
如果(selectedInstrument=='one'){
$('#dg')。数据网格({
栏目:[[
//这部分工作正常
]]
});
}
否则{
//这部分工作正常
}
}
一
二
三
如果使用数据:“headerData”
在ajax
调用中将数据设置为字符串,则需要如下更改:
var headerData = {
date : $('input[name="date"]').val(),
sunset : document.getElementById("sunset").value,
sunrise : $('input[name="sunrise"]').val(),//add " in the query
moonset : $('input[name="moonset"]').val(),
moonrise : $('input[name="moonrise"]').val(),
moonphase : $('input[name="moonphase"]').val(),
instrument : selectedInstrument,
obsname : $('input[name="obsname"]').val(),
astroresp : $('input[name="astroresp"]').val(),
techname : $('input[name="techname"]').val()
};
//console.log(headerData); //check if it has data or not
$.ajax({
url:"test.php",
type:"POST",
data: headerData,
success: function(data) {
alert("Data was succesfully captured");
},
}).done(function(data){
});
您使用data:“headerData”
在ajax
调用中将数据设置为字符串,您需要如下更改:
var headerData = {
date : $('input[name="date"]').val(),
sunset : document.getElementById("sunset").value,
sunrise : $('input[name="sunrise"]').val(),//add " in the query
moonset : $('input[name="moonset"]').val(),
moonrise : $('input[name="moonrise"]').val(),
moonphase : $('input[name="moonphase"]').val(),
instrument : selectedInstrument,
obsname : $('input[name="obsname"]').val(),
astroresp : $('input[name="astroresp"]').val(),
techname : $('input[name="techname"]').val()
};
//console.log(headerData); //check if it has data or not
$.ajax({
url:"test.php",
type:"POST",
data: headerData,
success: function(data) {
alert("Data was succesfully captured");
},
}).done(function(data){
});
在以json格式传递数据时,需要添加“dataType:json”
$.ajax({
url:"test.php",
method:"POST",
data: headerData,
dataType: 'json',
success: function(data) {
alert("Data was succesfully captured");
},
})
在以json格式传递数据时,需要添加“dataType:json”
$.ajax({
url:"test.php",
method:"POST",
data: headerData,
dataType: 'json',
success: function(data) {
alert("Data was succesfully captured");
},
})
用ajaxAs Sagar中的
data:headerData
替换data:headerData
,ajaxAs Sagar说,你向PHP发送的是一个简单字符串,而不是包含字段的对象。用data:headerData
替换data:headerData
,ajaxAs Sagar说,你向PHP发送的是一个简单字符串,不是一个包含字段的对象。谢谢你的回答,我刚刚尝试过,但遗憾的是,test.php中仍然没有任何内容。。。我的数据库中的每个字段都是空的更新了我的答案,首先你需要检查headerData
是否有数据。谢谢你的回答,我刚刚尝试过,但遗憾的是我在test.php中仍然没有任何内容。。。我的数据库中的每个字段都是空的更新了我的答案,首先你需要检查headerData
是否有数据。是的,实际上我认为它可能是完美的。所以我把注意力集中在数据类型上part@zacknafein而不是方法:“POST”,我需要写类型:“POST”,“不,这两个是等价的。您需要使用“type”的唯一原因是如果您有一个非常旧的jQuery版本。这可能不是你需要改变的事情。根据“如果您使用的是jQuery 1.9.0之前的版本,则应使用type”中的文档。如果你有1.9或更高,使用“方法”,因为它更清晰。是的,实际上我认为它可能是完美的。所以我把注意力集中在数据类型上part@zacknafein而不是方法:“POST”,我需要写类型:“POST”,“不,这两个是等价的。您需要使用“type”的唯一原因是如果您有一个非常旧的jQuery版本。这可能不是你需要改变的事情。根据“如果您使用的是jQuery 1.9.0之前的版本,则应使用type”中的文档。如果你有1.9或更高,使用“方法”,因为它更清楚。