AJAX(异步JavaScript和XML)是一种通过客户端和服务器之间的异步数据交换来创建无缝交互式网站的技术。 AJAX有助于与服务器进行通信或部分页面更新,而无需传统的页面刷新。
我在 WCF 服务中使用基本身份验证。 并且还使用 ASP 会员资格提供程序进行身份验证。 网络配置: 对于 REST 服务: 我在 WCF 服务中使用基本身份验证。 并且还使用 ASP 会员资格提供商进行身份验证。 网络配置: 对于 REST 服务: <webHttpBinding> <binding name="webHttpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="200065536" maxBufferPoolSize="200065536" maxReceivedMessageSize="200065536" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="202048000" maxStringContentLength="202048000" maxArrayLength="202048000" maxBytesPerRead="202048000" maxNameTableCharCount="202048000"/> <security mode="Transport"> </security> </binding> </webHttpBinding> 认证类型及模式: <serviceCredentials> <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="CustomMemberShipProvider" /> </serviceCredentials> 在调用任何方法之前,我的 BasicAuthentication 自定义类。 代码如下所示: namespace BasicAuth.Service { public class BasicAuthenticationInvoker : Attribute, IOperationBehavior, IOperationInvoker { #region Private Fields private IOperationInvoker _invoker; #endregion Private Fields #region IOperationBehavior Members public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation) { _invoker = dispatchOperation.Invoker; dispatchOperation.Invoker = this; } public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation) { } public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters) { } public void Validate(OperationDescription operationDescription) { } #endregion IOperationBehavior Members #region IOperationInvoker Members public object Invoke(object instance, object[] inputs, out object[] outputs) { System.Diagnostics.Debugger.Break(); if (Authenticate()) return _invoker.Invoke(instance, inputs, out outputs); else { outputs = null; return null; } } public object[] AllocateInputs() { return _invoker.AllocateInputs(); } public IAsyncResult InvokeBegin(object instance, object[] inputs, AsyncCallback callback, object state) { throw new NotSupportedException(); } public object InvokeEnd(object instance, out object[] outputs, IAsyncResult result) { throw new NotSupportedException(); } public bool IsSynchronous { get { return true; } } #endregion IOperationInvoker Members private bool Authenticate() { string[] credentials = GetCredentials(WebOperationContext.Current.IncomingRequest.Headers); if (credentials != null && credentials.Length == 2) { var username = credentials[0]; var password = credentials[1]; if (Membership.ValidateUser(username, password)) //if valid user { //get the roles of the user string[] roles = Roles.GetRolesForUser(username); Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(username), roles); return true; } } WebOperationContext.Current.OutgoingResponse.Headers["WWW-Authenticate"] = string.Format("Basic realm=\"{0}\"", string.Empty); WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized; return false; } private string[] GetCredentials(WebHeaderCollection headers) { string credentials = WebOperationContext.Current.IncomingRequest.Headers["Authorization"]; if (credentials != null) credentials = credentials.Trim(); if (!string.IsNullOrEmpty(credentials)) { try { string[] credentialParts = credentials.Split(new[] { ' ' }); if (credentialParts.Length == 2 && credentialParts[0].Equals("basic", StringComparison.OrdinalIgnoreCase)) { credentials = Encoding.ASCII.GetString(Convert.FromBase64String(credentialParts[1])); credentialParts = credentials.Split(new[] { ':' }); if (credentialParts.Length == 2) return credentialParts; } } catch (Exception ex) { } } return null; } } } 我的 Iservice 如下所示: 我的自定义类用作 Iservice 合约中的属性 public interface IService1 { [OperationContract] [BasicAuthenticationInvoker] //my custom class for authentication [WebGet(UriTemplate = "GetString?userID={userID}", ResponseFormat = WebMessageFormat.Json)] string GetString(string userID); } 使用 AJAX 调用调用 WCF REST 服务时,我将 Authentication 标头添加到请求中,并使用上述自定义类对用户进行身份验证。 AJAX 调用: 下面是用于调用服务的 Ajax 调用,并在访问服务之前使用 beforeSend 对用户进行身份验证。 <script> $(function () { alert("onload"); $.ajax ({ type: "GET", data:jsondata, url: https://localhost:446/BasicAuthService.svc/rest/GetString', cache: false, async: true, crossDomain:true, dataType: "json", contentType: "application/json; charset=utf-8", beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Basic plc2gxMjMk'); }, error: function(jqXHR, exception) { alert(jqXHR.status+" "+exception); } }); }); </script> 我的问题是: 我希望您能全面了解我的代码是如何工作的。 所以我需要的是,如何验证对服务的每个请求,而不是使用自定义类进行BasicAuthentication? WCF 中是否有任何内置功能用于验证传入请求? 提前致谢。 您的安全模式应指定基本身份验证: <security mode="Transport"> <transport clientCredentialType="Basic" /> </security>
我正在尝试使用一些 JSON 数据在控制器中调用一个操作,它似乎正在到达该操作,但数据均为空。 我的 Ajax 函数如下所示: 函数 AjaxPost(url, 数据...
我正在使用 Ajax BeginForm 进行后处理。传入控制器的值为 null。但是当我使用SettingViewModel 时,不会出现 null。但我需要使用我的 UsersRegister 模型。
Blob 和 Ajax 问题 TypeError: 无法在 'Blob' 上执行 'arrayBuffer': 非法调用
嗨,我正在尝试在 $.ajax 内传递数据中的 blob var blob = new Blob([内容], { type: 'text/plain;charset=utf-8' }); $.ajax({ 网址:“我的网址”, 类型:'POS...
我不确定我想做的事情是否可行 - 几乎我只想使用 AJAX 调用用户控件并获取该控件的渲染 html。然而,当我尝试获取控件时,我...
通过 Ajax 将多个 HTML 表单字段转换为 PHP 数组
我需要一些帮助。我有下面的 HTML 表单字段,我希望将它们发送到 PHP 页面的各个 PHP 数组。 超文本标记语言 我需要一些帮助。我有下面的 HTML 表单字段,我希望将它们发送到 PHP 页面的各个 PHP 数组。 HTML <input class="form-control" type="date" onchange="reportSave()" name="testreportname[]"> <input class="form-control" type="date" onchange="reportSave()" name="testreportdate[]"> <input class="form-control" type="date" onchange="reportSave()" name="testreportissue[]"> Javascript <script> function reportSave() { //Test Report Name //get the data from test report name var testreport=document.getElementsByName('testreportname[]'); var testreportdate=document.getElementsByName('testreportdate[]'); var testreportissue=document.getElementsByName('testreportissue[]'); var data1 = $(this).serializeArray(); //for each item in the array for(key=0; key < testreport.length; key++) { data1.push({ testreport: $("#testreport").val(), testreportdate: $("#testreportdate").val(), testreportissue: $("#testreportissue").val(), }); console.log("key: ", key) console.log(testreport) } //send to PHP via ajax $.ajax({ type: "post", url: "draftsave.php", dataType: "json", data: data1, success: function(result) { console.log(result) } }); } </script> PHP <?php $stestreport=$_POST['testreport']; $stestreportdate=$_POST['testreportdate']; $stestreportissue=$_POST['testreportissue']; for($i=0;$i<count($stestreport);$i++) { code here, etc}; ?> 编辑,删除已经尝试过的代码。 jQuery 提供了 serialize() 函数,该函数提供了一种非常简单的方法来从表单或一组特定字段中获取所有数据,并将它们转换为通常传输的表单 URL 编码格式如果您提交了常规表单(没有 AJAX)。这是 PHP 识别的格式,并将自动转换为其 $_POST 数组中的数据。 这个小演示展示了 a)serialize() 输出什么 b) 使用类名选择您感兴趣的特定字段的方法(注意 HTML 中每个输入字段上的额外类) c) 一种更好的方式,使用选择器来不引人注意地处理“更改”事件,而不是在 HTML 中添加 onchange 属性。 $(".reportField").change(function() { var formFields = $(".reportField").serialize(); console.log(formFields); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input class="form-control reportField" type="date" name="testreportname[]"> <input class="form-control reportField" type="date" name="testreportdate[]"> <input class="form-control reportField" type="date" name="testreportissue[]"> 因此,如果您想在 AJAX 中使用它,您最终会得到如下结果: $(".reportField").change(function() { var formFields = $(".reportField").serialize(); console.log(formFields); }); $.ajax({ type: "post", url: "draftsave.php", data: formFields, success: function(result) { console.log(result) } });
我在我的应用程序中使用 jsTree 和 contextmenu 插件。 删除节点时,我有一个 ajax 请求对我的数据库执行操作。 我想实际删除该节点...
我想使用ajax和laravel-10上传图像而不使用表单提交。我已经创建了路由控制器和模型,并使用 Ajax 函数将文件发送到 laravel 控制器。但经过验证我的
我有这个数组: 发货价格: [["17.50"], ["7.00"]] 发货地点 : [“砂拉越”, “吉隆坡”] 我完成了简单的循环功能并出现在html vie中...
将 blob url 转换为 FormData() 的上传文件,并通过 AJAX 将其发送到 PHP 文件
我想将 blob URL AKA (window.URL.createObjectURL(blob);) 转换为文件对象,这样我就可以将它与 FormData() 一起使用,这样我就可以将其用作 AJAX 的上传图像文件,但我做不到
'WSGIRequest'对象没有属性'is_ajax',将ajax添加到django项目时出错
/order 处出现属性错误 “WSGIRequest”对象没有属性“is_ajax” 将ajax添加到django项目时发生错误整个项目卡住了。 我正在创建一个 django 项目,我尝试使用 g...
使用 Javascript 和 AJAX 将 HTML 表单字段数组发送到 PHP Post
我有下面的代码,但我做错了。我需要它从表单字段“standardname[]”获取项目并通过 ajax 将其发送到 PHP。 这是我的代码: 函数标准保存(){ //获取
Woocommerce ajax 加载更多和 ajax 过滤器
我找到了 woocommerce 加载更多按钮的代码,我想将其与 ajax 属性过滤器结合使用,但结果并不符合预期。加载更多按钮加载下一页的产品
我想使用 JQuery 通过 AJAX Post 请求发布登录表单: 即使我将 csrf 令牌与其他令牌一起发送,但不知何故 Django 无法使用 cookie 内的令牌进行验证。 $(函数...
我试图插入一条记录,然后将其添加到数据库后检索它,但是检索它的第二个ajax调用应该在插入记录后等待。关于...的任何想法
在Chrome控制台中,消息错误是: 未捕获的引用错误:数据未定义 函数列表(){ $.ajax({ 类型:'POST', url:'adeneme.php', 数据:$('#form1').
有谁知道如何使“Tanggal Dibuat”(created_at)列按日期排序?目前当我点击它时。我认为日期没有显示正确的顺序,因为创建的时间是...
我第一次在这里问问题,但多年来我很享受许多其他帖子的见解。我正在尝试根据用户从另一个文件中选择的内容来更新 HTML 表中的字段...
在下面的代码中,工作正常,但我面临的唯一问题是,由 html2canvas 生成的文件在取消打印时被删除,这是正确的,但当我成功时...
我的编码有问题,我把它做得非常非常短,这样我就可以得到一个快速的答案,而不是浪费你的时间,我有一个输入文本,一个输入数字和一个按钮,当我单击按钮,一个