Javascript 此路由不支持POST方法。支持的方法:GET,HEAD。尝试使用ajax向控制器发送数据
我正在尝试使用ajax向controller发送数据,我发现此路由不支持POST方法。支持的方法:GET、HEAD。 有人能告诉我我做错了什么吗 在web.php中Javascript 此路由不支持POST方法。支持的方法:GET,HEAD。尝试使用ajax向控制器发送数据,javascript,jquery,ajax,laravel,post,Javascript,Jquery,Ajax,Laravel,Post,我正在尝试使用ajax向controller发送数据,我发现此路由不支持POST方法。支持的方法:GET、HEAD。 有人能告诉我我做错了什么吗 在web.php中 Route::post('/fb', 'FormController@fb')->name('fb'); HTML: 拯救 JavaScript: <script language="javascript"> $('#formfb').on('submit', function(e)
Route::post('/fb', 'FormController@fb')->name('fb');
HTML:
拯救
JavaScript:
<script language="javascript">
$('#formfb').on('submit', function(e){
e.preventDefault();
var w= <?php echo $resolution['width'] ;?>;
var h= <?php echo $resolution['height'] ;?>;
$("#picture").show();
html2canvas($('#picture'), {
width: w,
height: h
}).then(function(canvas) {
var inputURI = canvas.toDataURL('image/png');
var binaryVal;
var inputMIME = inputURI.split(',')[0].split(':')[1].split(';')[0];
if (inputURI.split(',')[0].indexOf('base64') >= 0)
binaryVal = atob(inputURI.split(',')[1]);
else
binaryVal = unescape(inputURI.split(',')[1]);
var blobArray = [];
for (var index = 0; index < binaryVal.length; index++) {
blobArray.push(binaryVal.charCodeAt(index));
}
var blobObject = new Blob([blobArray], {
type: inputMIME
});
var formData = new FormData();
formData.append("blob", blobObject, "blob");
var route= $('#form-data').data();
var form_data= $(this);
$.ajax({
type: 'POST',
url: route,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
data: form_data.serialize(),
success: function(Response){
console.log(Response);
}
});
})
</script>
$('#formfb')。关于('submit',函数(e){
e、 预防默认值();
var w=;
var h=;
$(“#图片”).show();
html2canvas($('图片'){
宽度:w,
身高:h
}).then(功能(画布){
var inputURI=canvas.toDataURL('image/png');
变量二进制;
var inputMIME=inputURI.split(',')[0]。split(':')[1]。split(';')[0];
if(inputURI.split(',')[0].indexOf('base64')>=0)
binaryVal=atob(inputURI.split(',)[1]);
其他的
binaryVal=unescape(inputURI.split(',)[1]);
var blobArray=[];
对于(var index=0;index
路线列表:
!!!更新
如果要使AJAX请求中的
url
参数动态化,只需
$.ajax({
type: 'POST',
url: {!!route('fb')!!},
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: form_data.serialize(),
success: function (Response) {
console.log(Response);
}
});
执行{!!!!}
可以将PHP传递到JS中
注意:这个答案是一个长时间聊天的结果,在这个聊天过程中,很多东西都经过了测试
在Apache和PHP的配置发生一些更改后,以下代码现在可以正常工作:
JavaScript/jQuery
检查浏览器开发工具中的“网络”选项卡,查看通过ajax发出的请求。你是说这个吗?请求URL:请求方法:POST状态代码:405方法不允许远程地址:[::1]:80引用者策略:交叉源时严格源如果执行
console.log(路由)
在ajax请求之前,什么是它的logIt不会记录任何东西。@hcphoon正在记录一些东西,我认为您没有在/fb
上发出请求,这就是为什么请求方法不受支持的原因。换句话说,route
变量似乎是问题所在。但为了确保,您应该检查它是否返回预期值d值。仍然不工作。@GabrijelBatista现在有什么问题?相同的问题。控制台仍然只显示405后(不允许使用方法)尝试对url进行编码,例如,url:'/fb'
已经尝试过了。我还尝试为这个ajax请求创建单独的脚本和函数,以查看脚本中是否有其他原因导致了这个问题,但仍然是相同的问题。
$.ajax({
type: 'POST',
url: {!!route('fb')!!},
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: form_data.serialize(),
success: function (Response) {
console.log(Response);
}
});
<script type="application/javascript">
function fb() {
let id = "{{ $user['id'] }}";
let email = "{{ $user['email'] }}";
$("#picture").show();
html2canvas($('#picture'), {
width: {{ $resolution['width'] }},
height: {{ $resolution['height'] }}
}).then(function (canvas) {
let imgData = canvas.toDataURL('image/png');
$.ajax({
type: "POST",
url: '{{ route('fb') }}',
dataType: 'text',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: {
base64data: imgData,
userid: id,
useremail: email
}
});
let imgsrc = document.getElementById("imgfb").src;
window.open("https://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(imgsrc), "pop", "width=600, height=400, scrollbars=no");
})
}
</script>
Route::post('/fb', 'FormController@fb')->name('fb');