我可以使用下面的表格获取json数据:
<form enctype="multipart/form-data" action="http://46.51.220.101/kookooapi/index.php/IVRSUploadFile/UploadFile" method="post">
<input id="default_file" name="file" type="file" />
<input id="account" name="account" type="hidden" value="testing" />
<input type="submit" value="Save">
</form>
但与jquery ajax一起使用时的相同形式是抛出错误:501 (Not Implemented)
$('#default_file').change(function (e) {
//on change event
formdata = new FormData();
if ($(this).prop('files').length > 0)
{
file = $(this).prop('files')[0];
formdata.append("music", file);
}
});
function hitexternal(e) {
$.ajax({
url: "http://46.51.220.101/kookooapi/index.php/IVRSUploadFile/UploadFile",
type: "POST",
data: new FormData($("#default_file")[0], {data :{"account":"testing"}}),
processData: false,
contentType: 'application/json',
success: function (response) {
console.log('resp: ' , response);
},
error: function (jqXHR, textStatus, errorMessage) {
console.log("error:" , errorMessage);
}
});
e.preventDefault();
}
我在这里想念的是什么?
答案 0 :(得分:1)
删除内容类型FormData将表单作为输入并将其转换为键/值对
function hitexternal(e) {
var formdata = new FormData($("form")[0]);
$.ajax({
url: "http://46.51.220.101/kookooapi/index.php/IVRSUploadFile/UploadFile",
type: "POST",
data: formdata ,
processData: false,
contentType: 'multipart/form-data', // or set it as false to let jquery chose the right one for you
success: function (response) {
console.log('resp: ' , response);
},
error: function (jqXHR, textStatus, errorMessage) {
console.log("error:" , errorMessage);
}
});
e.preventDefault();
答案 1 :(得分:0)
function hitexternal(e) {
e.preventDefault();
var fd=new FormData();
fd.append('image',$("#default_file")[0].files[0]);
fd.append('account','testing');
$.ajax({
url: "http://46.51.220.101/kookooapi/index.php/IVRSUploadFile/UploadFile",
type: "POST",
data: fd,
processData: false,
contentType: false,
datatype:'JSON',
success: function (response) {
console.log('resp: ' , response);
},
error: function (jqXHR, textStatus, errorMessage) {
console.log("error:" , errorMessage);
}
});
}
让我们试试这段代码
答案 2 :(得分:0)
501是未实现的HTTP状态代码。当服务器不支持所需设施时,将收到此状态代码。 我不知道这是否相关,但通常在客户端上请求JSON到不同域中的服务器时,由于同源策略,您需要使用JSONP而不是JSON。 好消息是,它们的API似乎不支持使用JSONP。 你可以考虑这些: How to mock a 501 error from ajax call Why do I get this 501 Not Implemented error? Post data into database via ajax. displays 501 internal error Enable ASP.NET ASMX web service for HTTP POST / GET requests http://www.computerhope.com/issues/ch001020.htm
答案 3 :(得分:0)
你好这是答案,请检查
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
function savedata()
{
jQuery.post({
url:"http://127.0.0.1/hk/ajaxpostaction.php",
type:"POST",
data:{"name":document.getElementById('username').value,"address":document.getElementById('address').value},
success: function(response){
alert("Post data : "+ result);
},
error: function(err){console.log('Error : ' + err);}
});
}
</script>
</head>
<body>
<form method="post">
Name : <input type="text" id="username" name="username" />
Address : <input type="text" id="address" name="address" />
<input type="button" name="submit" onclick="savedata();" value="submit" />
</form>
</body>
</html>
谢谢和问候 西仁
答案 4 :(得分:0)
2020年更新 jQuery $ .ajax post方法的替代答案。一整夜后,我制作了自己的解决方案,并使用了php脚本。我尝试了所有内容,包括$ .post,$ jqhr,$ jqXHR,但没有运气
此脚本告诉用户是否存在。但是该技术也可以用于其他用途。
jquery版本3.5 PHP 7.4版
我发现数据并没有发送到PHP,甚至没有在php脚本中使用$ _GET发送数据,因此有效的方法是自己制作URL并发布!
JavaScript代码
var email = $('#email').val();
$.ajax({
url: 'userexists.php?email='+email,
method: 'POST',
dataType:'text',
contentType: 'application/x-www-form-urlencoded',
data: {
'email': email
},
// on success response
success:function(response) {
$("#result").html(response);
},
// error response
error:function(e) {
$("#result").html("Some error encountered.");
}
})
PHP代码
<?php
require 'dbconfig.php';
$email = $_GET['email'];
$usr = "SELECT * FROM users WHERE email = '$email' ";
$results = $connection->query($usr);
if (mysqli_num_rows($results) == 0) { // if new user . Insert a new record
echo "fresh";
echo $email;
} else { // If Returned user . update the user record
echo "taken";
}
$connection->close();
exit();
?>