Javascript ajax向PHP提交错误的数据
这是一个html文件,通过点击按钮将ajax提交到PHP脚本(在IIS上) 但是PHP脚本收到了错误的格式化数据(添加了括号[],没有传输参数'section' 有什么不对劲 最好同时拥有两种解决方案:JQuery和纯javascript -------------------HTMLJavascript ajax向PHP提交错误的数据,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,这是一个html文件,通过点击按钮将ajax提交到PHP脚本(在IIS上) 但是PHP脚本收到了错误的格式化数据(添加了括号[],没有传输参数'section' 有什么不对劲 最好同时拥有两种解决方案:JQuery和纯javascript -------------------HTML <!DOCTYPE html> <html STYLE="height:100%;"> <head></head> <body> &
<!DOCTYPE html>
<html STYLE="height:100%;">
<head></head>
<body>
<SCRIPT>
function zPostToTopic_ajax(){
var url='http://the_server/infospace/php/infospace2.php';
var formData2 = new FormData();
formData2.append('section', 'general');
formData2.append('action2', 'preview');
http_request=new XMLHttpRequest();//work for IE11 too, // code for IE7+, Firefox, Chrome, Opera, Safari
http_request.open("POST", url);
//------------------------------------
http_request.onreadystatechange = function() {
if(http_request.readyState == 4 && http_request.status == 200)
alert(http_request.responseText)
}
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http_request.send(formData2);
}
</SCRIPT>
<FORM NAME=form_post_to_topic ID=form_post_to_topic METHOD=POST action="http://the_server/infospace/php/infospace2.php">
  <INPUT TYPE=BUTTON VALUE=Send onClick="zPostToTopic_ajax();return false;">
</FORM>
</body>
</html>
使用jQuery的.ajax()
函数。下面是一个我上传文件的例子
var jform = new FormData();
jform.append('supply_id',supply_id);
jform.append('fuel_usage',$('#fuel_usage').val());
jform.append('cost',$('#cost').val());
jform.append('currency',$('#currency').val());
jform.append('evidence',$('#evidence').get(0).files[0]);
$.ajax({
url: '/your-form-processing-page-url-here',
type: 'POST',
data: jform,
dataType: 'json',
contentType: false,
cache: false,
processData: false,
success: function(data, status, jqXHR){
alert('Hooray! All is well.');
console.log(data);
console.log(status);
console.log(jqXHR);
},
error: function(jqXHR,status,error){
// Hopefully we should never reach here
console.log(jqXHR);
console.log(status);
console.log(error);
}
});
使用jQuery的.ajax()
函数。下面是一个我上传文件的例子
var jform = new FormData();
jform.append('supply_id',supply_id);
jform.append('fuel_usage',$('#fuel_usage').val());
jform.append('cost',$('#cost').val());
jform.append('currency',$('#currency').val());
jform.append('evidence',$('#evidence').get(0).files[0]);
$.ajax({
url: '/your-form-processing-page-url-here',
type: 'POST',
data: jform,
dataType: 'json',
contentType: false,
cache: false,
processData: false,
success: function(data, status, jqXHR){
alert('Hooray! All is well.');
console.log(data);
console.log(status);
console.log(jqXHR);
},
error: function(jqXHR,status,error){
// Hopefully we should never reach here
console.log(jqXHR);
console.log(status);
console.log(error);
}
});
您的问题是为请求设置了错误的内容类型。当您使用formdata对象时,内容类型将是多部分/formdata。
因此,在使用formdata对象时,不设置内容类型,而是为您设置
function zPostToTopic_ajax(){
var url='http://the_server/infospace/php/infospace2.php';
var formData2 = new FormData();
formData2.append('section', 'general');
formData2.append('action2', 'preview');
http_request=new XMLHttpRequest();//work for IE11 too, // code for IE7+, Firefox, Chrome, Opera, Safari
http_request.open("POST", url);
//------------------------------------
http_request.onreadystatechange = function() {
if(http_request.readyState == 4 && http_request.status == 200)
alert(http_request.responseText)
}
http_request.send(formData2);
}
您的问题是为请求设置了错误的内容类型。当您使用formdata对象时,内容类型将是多部分/formdata。
因此,在使用formdata对象时,不设置内容类型,而是为您设置
function zPostToTopic_ajax(){
var url='http://the_server/infospace/php/infospace2.php';
var formData2 = new FormData();
formData2.append('section', 'general');
formData2.append('action2', 'preview');
http_request=new XMLHttpRequest();//work for IE11 too, // code for IE7+, Firefox, Chrome, Opera, Safari
http_request.open("POST", url);
//------------------------------------
http_request.onreadystatechange = function() {
if(http_request.readyState == 4 && http_request.status == 200)
alert(http_request.responseText)
}
http_request.send(formData2);
}
不使用jQuery的AJAX有什么原因吗?
jQuery和纯javascript
?只需使用jQuery就可以了,这会简单得多。或者只需使用纯JS,但为什么两者都需要呢?接收的数据似乎与发送的数据一致,这里没有问题。请查看打印($\u POST)的输出
它将在javascript调试器http\u request.responseText
中可见,或者您可以执行file\u put\u contents('dump.txt',print\r($\u POST',1));
然后查看该文件有没有不使用jQuery的AJAX的原因?jQuery和纯javascript
?只需使用jQuery就可以了。或者只需使用纯JS,但为什么需要两者?接收的数据似乎与发送的数据一致,这里没有问题。尝试查看打印的输出_r($\u POST);
它将在javascript调试器http\u request.responseText中可见,或者您可以执行文件放置内容('dump.txt',print\u r($\u POST',1));
然后查看该文件谢谢-解决了这个问题!谢谢-解决了这个问题!