无法使用jquery ajax发布数据

时间:2016-09-07 06:16:06

标签: javascript jquery ajax

我可以使用下面的表格获取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();
}

我在这里想念的是什么?

5 个答案:

答案 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();


?>