jQuery Ajax POST call with JSON in Rest Web Service Issue

前端 未结 3 1621
生来不讨喜
生来不讨喜 2021-01-14 22:39

I want to post a JSON object from my page to a Rest WS. But when I am posting json through jQuery ajax call as output I am getting a HTML page with \"HTTP Status 405

相关标签:
3条回答
  • 2021-01-14 22:53

    After lot of googling I have found some solution. Now I am using HTTP-Proxy-Servlet.

    I have crated a java web application with my html page which has the ajax call and from my ajax call I am calling a URL of same domain. Please refer my ajax call.

     $.ajax({
            url: "rest/api/crunchifyService/jsonpost",
            method: "POST",
            data: JSON.stringify(jsonObj),
            dataType: 'json',
            contentType: "application/json",
             success: function(result,status,jqXHR ){
                  //Do something
             },
             error(jqXHR, textStatus, errorThrown){
                 //Do something
             }
        }); 
    

    Now I have done this same domain call mapping with org.mitre.dsmiley.httpproxy.ProxyServlet. Please refer my web xml.

    <servlet>
        <servlet-name>proxy</servlet-name>
        <servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class>
        <init-param>
            <param-name>targetUri</param-name>
            <param-value><!-- Cross domain URL goes here --></param-value>
        </init-param>
        <init-param>
            <param-name>log</param-name>
            <param-value>true</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>proxy</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
    

    Now my ajax is calling this Proxy Servlet and it is redirecting to the CROS destination Rest Web Service.

    Please refer the following URL, you will get more details.

    https://github.com/mitre/HTTP-Proxy-Servlet

    0 讨论(0)
  • 2021-01-14 22:56

    datatype should be dataType: 'json'

    If you are using contentType: "application/json", , then you should stringify your data.

    data:JSON.stringify(jsonObj), 
    
    0 讨论(0)
  • 2021-01-14 23:00

    Try using type & contentType settings of ajax:

    type:'POST',
    contentType: 'application/json',
    

    Example:

    function loadDoc(){
      var num = '{"empid": 45,"name": "gaurav","salary":566.55}';
      $.ajax({
        url: 'http://localhost:9029/addS',
        method: 'POST',
        type:'POST',
        contentType: 'application/json',
        success: function(response){
          console.log("response::::"+response);
          $("#output").text(response);
        },
        error: function( jqXHR,textStatus, errorThrown){
          console.log("Error askdjk");
          console.log(jqXHR);
          console.log(textStatus);
          console.log(errorThrown);
        }
      });   
    }
    
    0 讨论(0)
提交回复
热议问题