我正在使用此代码:
function save() {
// submit the dataform
$.post(document.dataform.action,
$("#dataform").serialize(),
function(reply) {
//handle reply here
});
}
这会将正确的数据发送到服务器,但它会到达$ _GET。当我改变服务器代码以匹配时,我得到预期的答复。 dataform.action上有一部分查询。我期望以$ _GET的形式到达。
如何实际让POST从表单发送数据,以便它到达$ _POST,从而避免GET的大小限制?
我正在使用Firefox,JQuery 9和PHP 5.4.3进行测试
谢谢,伊恩
答案 0 :(得分:0)
$ _ GET从查询字符串中获取参数,以便$ _POST和$ _GET执行此操作:
var action = document.dataform.action;
var get_variable = "var1=v1&var2=v2...";
action = action+"?"+get_variable;
$.post(action,
$("#dataform").serialize(),
function(reply) {
//handle reply here
});
答案 1 :(得分:0)
function save() {
// submit the dataform
$.post(document.dataform.action,
{ data: $("#dataform").serializeArray() })
.done(function(reply) {
//handle reply here
});
}
然后json_decode($ _ POST ['data']);用PHP
答案 2 :(得分:0)
破解了!正确的方法是
function save() {
// submit the dataform
$.ajax({
url: document.dataform.action,
data: new FormData(document.dataform),
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(reply){
if (reply.action) fetch('/content.php',reply.action);
if (reply.content) document.getElementById('content').innerHTML=reply.content;
if (reply.menu) document.getElementById('menu').innerHTML=reply.menu;
if (reply.status) document.getElementById('status').innerHTML=reply.status;
calcSize();
}
});
}
但这仅适用于支持FormData的浏览器 - Chrome 7 +,FF4.0 +,IE 10 +,Opera 12+和Safari 5+
好的,我的用例;)
感谢大家的投入。