2010-04-30 103 views
2

JSON函數(索引)不會觸發。有任何想法嗎?簡單的getJSON不起作用

<script type="text/javascript"> 
    $(document).ready(function() { 
     alert("This alert is displayed :("); 
     $("form[action$='GetQuote']").submit(function() {     
      $.getJSON($(this).attr("action"), $(this).serialize(), function(Result) { 
       alert("This alert is not shown :("); 
       $("#name").html(Result.name); 
       $("#address").html(Result.address); 
      }); 
      return false; 
     }); 
    });  
</script> 

控制機...

public JsonResult GetQuote(string dataName) 
    { 
     if (dataName != "" || dataName != null) 
      return new JsonResult { Data = new Result { name = "Hello", address = "World" } }; 
     else 
      return null; 
    } 
+2

方法'isNullOrEmpty'返回一個字符串,還是返回一個布爾值? – 2010-04-30 15:15:56

+0

它返回一個字符串,但我做了一些更改,以適應null或空。請參閱編輯 – MrM 2010-04-30 15:18:50

+1

使用: 'if(String.IsNullOrEmpty(dataName))' 這是一個公認的做法。 – Aren 2010-04-30 15:20:47

回答

2

ASP.NET MVC 2.0勢必會拋出一個錯誤,如果試圖默認情況下使用HTTP GET進行此操作。您可以使它成爲一個POST或添加指令這篇文章中提出:

http://mhinze.com/json-hijacking-in-asp-net-mvc-2/

是: 返回JSON(數據,JsonRequestBehavior.AllowGet);

0

首先,你應該使用$.ajax功能,並指定了 「POST」 來發表您的數據名稱。

其次,你可能需要阻止默認事件的發生:

$("form[action$='GetQuote']").submit(function(event) { 
    if (event.preventDefault) // Older I.E. uses an old DOM model, which dosen't have this event 
     event.preventDefault(); 

    $.ajax(...) // Do your ajax call 
    return false; // Once again, for I.E. 
}); 

提交事件可能會改寫你的onsubmit用jQuery