【发布时间】:2019-07-11 18:49:52
【问题描述】:
我已根据以下答案更新了问题。我认为我的主要困惑在于“数据”参数以及在 js 调用中如何处理它。
C#方法
[HttpPost]
public string GetPreviewURL(string activityID)
{
try
{
var requestContext = ContextHandler.GetRequestContext(Request);
object[] arguments = new object[] { requestContext };
var sew= SumtContainer.Resolve<ICLWOrker>(typeof(ICLWOrker).FullName, arguments);
return sew.GetPreviewUrl(activityID);
}
catch (Exception e)
}
在这个 JS 调用“POST”之后的参数我认为应该是数据,但我很困惑如何从 JSON 中获取 URL。
apiAccessClient = new apiClient();
var apiUrl = STRING_SITE_PREFIX + '/service/webapi/GetPreviewURL/?activityID=' + actId;
//define 'data' here?
apiAccessClient.send(STRING_USERMODE, apiUrl, "POST", data, onPreviewSuccess, onError, 0, null, false, false, true);
return;
apiAccessClient 当前设置在另一个 js 文件中,该文件是设置 Ajax 调用的位置
$.ajax({
type: this.requestType,
url: this.apiUrl,
contentType: "application/json; charset=utf-8",
context: this,
async: isAsync,
data: JSON.stringify(flattenModel(this.parameters)),
statusCode: {
401: function () { _UTL_NavigateToTimeOutPage(); }
},
beforeSend: function (request) {
request.setRequestHeader("X--AjaxRequest", "1");
request.setRequestHeader("_SUMTC", _UTL_GetCSRFToken());
request.setRequestHeader("EmulatorUserName", _UTL_GetEmulatorUserName());
request.setRequestHeader("x--authenticationmode", "jwt");
request.setRequestHeader("sumtotaljwt", _UTL_GetJWT());
request.setRequestHeader("broker_Session_Id", _UTL_GetBrokerSessionId());
if (userMode !== null && userMode.length > 0) {
request.setRequestHeader("X-UserMode", userMode);
}
request.setRequestHeader("x-viewableuserid", viewableUserId);
if (!(isUndefinedOrNull(STRING_PROXYFORID))) {
request.setRequestHeader("x-proxyforuserid", STRING_PROXYFORID);
request.setRequestHeader("x-usermode", userMode);
}
},
success: function (data, statusCode, jqXHR) {
var contentType = jqXHR.getResponseHeader("Content-Type");
if ((jqXHR.status == 200) && contentType.toLowerCase().indexOf("text/html") < 0) {
successCallback(data, this.currentContext);
} else if ((dataReturnTypeText == true) && (jqXHR.status == 200)){
successCallback(data, this.currentContext);
}
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status != 401) {
if (errorCallback === null || errorCallback === undefined) {
this.error(jqXHR, textStatus, errorThrown);
}
else {
errorCallback(jqXHR, textStatus, errorThrown);
}
}
}
});
如何获取它,以便在新窗口中打开我返回的网址?
感谢您的宝贵时间!
【问题讨论】:
-
你必须提出一个 ajx 请求
-
方法驻留在ajax调用中的文件是如何被引用的?我只是把项目路径?
-
详细说明@danielawhite 说。您的客户端在浏览器中运行,而您的 C# 代码在服务器上运行。您需要在服务器上公开一个端点(可能使用 WebAPI),然后您的 Javascript 代码回调服务器并在该端点上调用该代码
标签: javascript c# ajax