2014-02-22 110 views
1

我有一個MVC彈簧控制器。我在頁面加載時調用了這個ajax。ajax調用MVC彈簧控制器,未找到錯誤

$.ajax({ 
      type:  "get", 
      url:  'custom/Service', 
      data:  "note1=" + "11", 
      dataType: "json", 
      async: false, 
      success: function() { 
         alert("1"); 
      }, 
      error:function (xhr, ajaxOptions, thrownError){ 
       if(xhr.status == 200 && xhr.statusText == 'parsererror'){ 
        window.location.reload(); 
       } else { 
        alert(xhr.status+","+xhr.statusText); 
        alert(thrownError); 
       } 
      }  
     }); 

我的控制器:

@RequestMapping("/custom") 
public class CustomController { 

    @RequestMapping(value="/Service", method=RequestMethod.GET) 
     public String Service(
       @RequestParam("note1") String note1, 
       HttpServletRequest request, HttpServletResponse response, Locale locale, 
       Model model) { 
      String result = custom.Service(note1, request, response); 
     System.out.println("result: " + result); 
     return result; 
    } 
} 

的了賣出期權的控制檯,控制器正確。但我收到「未找到」錯誤。以下是開發人員工具錯誤:GET「MySite/custom/Service?note1 = 11」404(Not Found)。哪裏不對?

回答

1

更改您的代碼如下圖所示:

@RequestMapping(value="/Service", method=RequestMethod.GET) 
     public @ResponseBody String Service(
       @RequestParam("note1") String note1, 
       HttpServletRequest request, HttpServletResponse response, Locale locale, 
       Model model) { 
      String result = custom.Service(note1, request, response); 
     return result; 
    } 

你可以在你的ajax成功函數訪問結果。

success: function(result) { 
         alert(result); 
      }, 
+0

該路徑是正確的。因爲我可以看到控制檯中的輸出。我在項目中使用該路徑進行其他ajax調用,並且它可以工作。 – Mark

+0

你正在返回結果,是否正確?它必須是一個jsp名稱。 –

+0

我剛剛創建了一個類,並將所有映射放在如下所示:@RequestMapping(「/ custom」) public class CustomController @RequestMapping(value =「/ Service」,method = RequestMethod.GET) \t public String ServiceType ( \t \t \t @RequestParam( 「注1」)字符串備註1, \t \t \t HttpServletRequest的請求,響應HttpServletResponse的,區域設置區域設置, \t \t \t模型模型){ \t \t字符串結果= custom.Service(備註1,請求,響應); \t System.out.println(「result:」+ result); \t返回結果; } – Mark

0

需要響應體註釋添加到您的返回參數

public @ReponseBody String Service(

彈簧控制器沒有返回一個視圖,它可以返回的數據,與reposnsebody註解。根據您的視圖解析器設置,您的原始代碼將根據jsp查找結果變量。