从不同的视图/页面调用时如何更改AJAX调用目标?

时间:2011-01-12 18:40:58

标签: jquery asp.net-mvc ajax unit-testing qunit

我正在使用Qunit测试.js脚本。

我有一个静态.html测试工具,其中包含.js“测试中的代码”(CUT)并包含适当的标记。我正在使用另一个包含的脚本中的QUnit进行测试 此工具和测试脚本驻留在项目中:Application.UI.Tests.JScript

CUT中有一些AJAX调用,它们具有相对于使用它的视图位置的目标 视图和脚本驻留在MVC项目的常规文件夹中:Application.UI

Application.UI.Tests.JScript的构建事件执行脚本和内容文件夹的DelXCopy,以确保测试针对最新版本的CUT运行。

示例代码:

sendDataToServerViaAjax: function () {
    var dataToSend = somefunctionThatReturnsData();

    $.ajax({
         url: 'actionName'
        , type: 'post'
        , data: dataToSend
        , dataType: 'json'
        , success: function (returnedData) {
            alert('This was received by server: ' + returnedData);
        }
    });
}

actionName转到某个操作:

[ValidateInput(false)] //TODO for now
public JsonResult actionName(FormCollection formIn)
{
    string jsonData = formIn[0];
    JsonResult result = new JsonResult();
    result.Data = jsonData;
    return result;
}

现在只返回数据,最终会调用Domain层中的正确逻辑。


问题: 如何在Application.UI中从静态.html页面调用运行Application.UI.Tests.JScript项目中的控制器上的CUT调用AJAX操作,而不编辑CUT以包含特定于测试的信息?

1 个答案:

答案 0 :(得分:0)

url值从actionName更改为/Controller/actionName会使网址相对于网站的根目录,例如。

$.ajax({
     url: 'actionName'
    , type: 'post'
    , data: dataToSend
    , dataType: 'json'
    , success: function (returnedData) {
        alert('This was received by server: ' + returnedData);
    }
});