我正在尝试使用ajax将javascript数组发送到新页面。在SO上有很多问题,在搜索完答案后我决定使用Ajax,如下:
var test = {};
test['a1'] = 1;
test['a2'] = 2;
$(document).ready(function(){
$('#form').submit(function(e){
$.ajax({
url: 'newpage.php',
data: {test:test},
type: 'post',
success: function(data) {
alert(data);
}
});
window.open('newpage.php', 'formres','width=800,height=800,resizeable,scrollbars');
e.preventDefault();
});
});
它的工作原理是新窗口应该打开 - 但是$ _POST-array是空的。我做错了什么?
编辑: 我尝试过{test:test},{'test':test}并进行测试。我将尝试序列化数据,看看会发生什么。 @Louis H:谢谢你,没想到。我会尝试使用Firebug。非常感谢你们所有人!
Edit2:尽管测试阵列没有通过,但仍然困扰我。正如Kevin B指出的那样,post请求应该保存参数a1和a2,但事实并非如此。如果我发现我做错了,我会再次发帖。
答案 0 :(得分:0)
尝试
$(this).serialize()
您的数据。这会将表单序列化为正确的后期数据,可以由$ _POST
使用更多信息:http://api.jquery.com/serialize/
也许你想在弹出窗口中显示这篇文章的结果?那么你应该在回调函数中打开窗口。
$('#form').submit(function(e){
$.ajax({
url: 'newpage.php',
data: $(this).serialize(),
type: 'post',
success: function(data) {
alert(data);
window.open('newpage.php', 'formres','width=800,height=800,resizeable,scrollbars');
}
});
return false;
});
答案 1 :(得分:0)
嗯,请尝试添加
'async': false,
这用于在打开新窗口之前等待POST发送。
答案 2 :(得分:0)
两年后,我发现这仍然相关。必须为 xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
设置内容标头,在Javascript中,您可以这样设置:
function CheckKorrespondenzAdresse() {
var korrespondenzadresse1 = Xrm.Page.getAttribute("new_correspondece_adress").getValue(); //get the Koresspondenzadresse value
var pplz = Xrm.Page.getAttribute("new_address3_postalcode").getValue(); //get the P-PLZ value
var port = Xrm.Page.getAttribute("new_address3_city").getValue(); //get the P-Ort value
var gplz = Xrm.Page.getAttribute("address2_postalcode").getValue(); //get the G-PLZ value
var gort = Xrm.Page.getAttribute("address2_city").getValue(); //get the G-Ort value
if (korrespondenzadresse1 == '100000002' | pplz != null | port != null) {
confirm("P Adresse enthält Daten! Korrespondenzadresse wird darum auf Privatadresse geändert!"); //User benachrichtigen, dass Feld Daten enthält
Xrm.Page.getAttribute("new_correspondece_adress").setValue(100000000); //Korrespondenzadresse auf Privatadresse ändern
}
else if (korrespondenzadresse1 == '100000002' | gplz != null | gort != null) {
confirm("G Adresse enthält Daten! Korrespondenzadresse wird darum auf Geschäftsadresse geändert!"); //User benachrichtigen, dass Feld Daten enthält
Xrm.Page.getAttribute("new_correspondece_adress").setValue(100000001); //Korrespondenzadresse auf Geschäftsadresse ändern
}
}