1

下面是POST我用来向 ASP MVC3 视图返回一些信息的 Ajax 变量。但是,我无法使.dialg()弹出功能正常工作。现在您单击调用的图标,GetProgramDetails(pgmname)没有任何反应。第一次使用 Ajax,所以任何建议都将不胜感激。谢谢!

<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();
    }
4

1 回答 1

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

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

于 2013-02-13T19:35:01.060 回答