【问题标题】:Simple getJSON does not work简单的 getJSON 不起作用
【发布时间】:2010-04-30 15:13:35
【问题描述】:

JSON 函数(索引)不会触发。有任何想法吗?

<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;
    }

【问题讨论】:

  • 方法isNullOrEmpty是返回一个字符串,还是返回一个布尔值?
  • 它返回一个字符串,但我做了一些更改以适应 null 或空。见编辑
  • 使用:if(String.IsNullOrEmpty(dataName)) 这是公认的做法。

标签: c# javascript jquery asp.net-mvc


【解决方案1】:

默认情况下,如果尝试使用 HTTP GET 执行此操作,ASP.NET MVC 2.0 将引发错误。您可以将其设为 POST 或按照本文中的建议添加说明:

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

即: 返回 Json(数据,JsonRequestBehavior.AllowGet);

【讨论】:

    【解决方案2】:

    首先,您可能应该使用$.ajax 函数,并指定一个“POST”来发布您的dataName。

    其次,您可能需要防止发生默认事件:

    $("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.
    });
    

    提交事件可能会覆盖您与 jQuery 绑定的 onSubmit

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2015-01-16
      • 2010-11-08
      相关资源
      最近更新 更多