将Ajax POST变量传递给JQuery UI对话框

时间:2013-02-13 19:16:34

标签: ajax jquery jquery-ui-dialog

下面是一个Ajax POST变量,用于将一些信息返回给ASP MVC3 View。但是,我无法使.dialg()弹出功能起作用。现在你点击调用GetProgramDetails(pgmname)的图标,没有任何反应。第一次使用Ajax,所以任何建议将不胜感激。 THX!

<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script>

<script type="text/javascript">
    function GetProgramDetails(pgmname) {

        var request = $.ajax({
            type: 'POST',
            url: '/BatchPrograms/PopDetails',
            data: { programName: pgmname },
            dataType: 'html'
        });

        request.done(function (data) {
            $('#data').dialog();
        });
</script>

编辑

我已更新request.done函数以包含一个简单的alert,以查看是否正在调用代码。在使用Chrome的调试器后,我看到里面的代码被完全跳过了。

    request.done(function (data) {
    alert("HERE!");
        $('#programExplanation').html(data);
    });

第二次编辑

以下是ajax从以下位置返回值的控制器代码:

    [HttpPost]
    public string PopDetails(string programName)
    {
        BatchPrograms batchprograms = db.BatchPrograms.Find(programName);
        if (batchprograms == null) return string.Empty;
        StringBuilder s = new StringBuilder();
        s.Append(batchprograms.ProgramName + " - " + batchprograms.ShortDescription);
        s.Append("<br />Job Names: " + batchprograms.PrdJobName + ", " + batchprograms.QuaJobName );
        s.Append("<br /> " + batchprograms.Description);
        return s.ToString();
    }

1 个答案:

答案 0 :(得分:2)

您需要使用success方法来处理回调,如下所示:

var request = $.ajax({
        type: 'POST',
        url: '/BatchPrograms/PopDetails',
        data: { programName: pgmname },
        dataType: 'html'
    }).success(function(data){ $('#data').dialog()} );

这将为您启动对话框,但是如果您想让响应数据与它一起使用,您可以让GetProgramDetails采用第二个参数,这是在加载数据之后的回调:

function GetProgramDetails(pgmname, callback) {

    var request = $.ajax({
        type: 'POST',
        url: '/BatchPrograms/PopDetails',
        data: { programName: pgmname },
        dataType: 'html'
    }).success(callback);
}

这样,收到响应后,您可以处理在回调实现中如何处理数据,在这种情况下,您似乎将在对话框中设置数据并启动对话框。