2010-04-30 123 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