失败场景:
我将提交事件绑定(bind)到 AJAX post 请求,以将硬编码的键值对发送到 PHP 脚本,该脚本将返回一条消息,说明请求已被正确接收。
提交事件触发并发送 AJAX 请求,但失败。查看 firebug 中的参数,参数看起来与它们应该的完全一样。
$(document).ready(function(event) {
$('form').submit(function(event) {
$.post( "reqhandler.php", { "division": "division"});
})
})
工作场景:
我复制 POST 请求并将其按原样输入控制台。请求就像上面一样使用相同的参数执行,但这次它有效:
$.post( "reqhandler.php", { "division": "division"});
我的猜测:
我在上面显示的两个场景之间的唯一区别是请求 header 中的内容长度。失败场景的内容长度 header 为 23,工作场景的内容长度为 17,这是它应该的。
为什么失败的场景不起作用?我不确定如何修复它。
最佳答案
假设您有一个带有提交按钮的表单,请使用以下外部 JavaScript:
$(function(){ //load start
$('form').submit(function(){ // no need for EventObject here
$.post('reqhandler.php', {division: 'division'}, function(res){
console.log(res); // use Firebug
// res could be result from PHP's echo json_encode($assocArray);
}, 'json');
return false;
})
}); // load end
reqhandler.php 可能看起来像:
<?php
$res = array('someProp' => 'a value', 'prop2' => array('now', 'you', 'see', 365));
if(isset($_POST['division'])){
echo json_encode($res);
}
?>
关于javascript - $ ('form' ).提交更改内容长度 header 并导致请求失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38318585/