好问题......是的,你可以做到这一点。但是您必须自己使用response
回调函数编写功能,然后对文件发出“真正的”Ajax 请求(而不是使用proxy
选项)。下面我只是打了另一个$.ajax()
电话,因为我没有为那个端点设置模拟处理程序,所以 Mockjax 让它通过。
请注意,设置 URL 参数与您建议的略有不同,模拟设置如下所示:
$.mockjax({
url: /\/Api\/Cases\/(\d+)/, // notice the regex here to allow for any ID
urlParams: ['caseID'], // This defines the first matching group as "caseID"
responseTime: [500, 800],
response: function(settings, mockDone) {
// hold onto the mock response object
var respObj = this;
// get the mock data file
$.ajax({
url: 'mocks/test-data.json',
success: function(data) {
respObj.status = 200;
// We can now use "caseID" off of the mock settings.urlParams object
respObj.responseText = data[settings.urlParams.caseID];
mockDone();
},
error: function() {
respObj.status = 500;
respObj.responseText = 'Error retrieving mock data';
mockDone();
}
});
}
});
但是,您的代码还有另一个问题,您的 Ajax 调用不会将ID 添加到 URL,而是将其添加到查询字符串中。如果您想使用该 API 端点,您还需要更改源代码$.ajax()
调用。这是新的 Ajax 调用:
$.ajax({
type: 'GET',
url: '/Api/Cases/' + taskId, // this will add the ID to the URL
// data: {caseId: taskId}, // this adds the data to the query string
success: function(data){
//use the returned
console.log(data);
}
});
请注意,这假定模拟数据类似于:
{
"13": { "name": "Jordan", "level": 21, "id": 13 },
"27": { "name": "Random Guy", "level": 20, "id": 27 }
}