2017-04-15 94 views
0

請幫忙。我無法在服務器端控制器上受到任何影響。每當瀏覽器出現「404-Not Found」錯誤。我想將post數據傳遞給服務器端,並想從服務器返回任何其他字符串。下面是我的代碼片段: -Angular Ajax POST請求不工作 - 給404錯誤

的web.xml servlet映射: -

<servlet-mapping> 
    <servlet-name>sdnext</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

MyController.java:-

import....; 

@Controller 

public class MyController { 

    @RequestMapping(value = "/registration", method = RequestMethod.POST) 
    @ResponseBody 
    public String methodStart(@RequestParam (value="UID",required=true) String json){ 
     System.out.println("Data recieved is:-"+json); 
     return "hello"; 
    } 
    } 

客戶端代碼: -

var params=({ 
      'UID': 'testdata' 
      }); 
$http({ 
      method: 'POST', 
      url: 'http://192.168.1.103:8081/ProjectName/registration.html', 
      headers: { 'Content-Type': 'application/json' }, 
      data:JSON.stringfy(params) 
     }).success(function(data){ 
       console.log("Success Call"); 
      }) 

      .error(function(data, status) { 
       console.log("Error Block"); 
      }) 
+0

請不要用'angular'標記AngularJS問題。 'angular'適用於Angular版本2以上。謝謝 –

+0

在我看來,這個問題與Angular無關,因爲它是服務器錯誤。您是否嘗試直接從您的瀏覽器(例如郵遞員)觸發'http://192.168.1.103:8081/ProjectName/registration.html'? – yktoo

+0

是的,我試過了,但它只適用於GET請求而不是POST的情況。如果我在控制器方法中將方法的類型更改爲GET,它可以工作,但我不希望這樣,我只想將方法設置爲POST,因爲我必須發送更多數據 –

回答

0

嘗試這個:

  1. 更改value = "/registration",例如value = "/user-registration"以避免衝突與其他環節
  2. 變化http://192.168.1.103:8081/ProjectName/registration.htmlhttp://192.168.1.103:8081/ProjectName/registration-user,造成也許.html後綴混淆了春天。
  3. 它會工作,春季將registration-user更改爲registration,並且$httphttp://192.168.1.103:8081/ProjectName/registration的URL(沒有.html後綴)。我不認爲你可以用這種方式映射web.xml中的AJAX請求