大佬教程收集整理的这篇文章主要介绍了ios – 如何从UIWebView中的最终表单步骤获取/处理ajax响应?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在这个填充程序中,您可以加载一个组成的URL,您可以根据Ajax调用在UIWebView委托中检测该URL.当委托看到假URL时,您记录Ajax调用,但返回不应该发生加载.你shim然后调用原始的Ajax代码,所以一切正常.
因此,虽然您无法检测到Ajax调用,但您可以检测到URL请求.
以下答案似乎只有你需要的:UIWebViewDelegate not monitoring XMLHttpRequest?
**更新**
我从上面的链接中获取代码并将其扩展为也检测响应.此更新的代码请求在“//”之后加载包含readyState和http状态的虚假URL.它在每个准备好的状态变化时执行此操作
因此,当发出Ajax请求时,您将在UIWebView委托中看到以下请求:
1)加载形式为mpAjaxHandler:// URL的URL的请求
2)在Ajax send()之后的每个状态更改中,请求加载mpAjaxHandlerDone形式的URL:// readyState:httpstatus / URL
我想你正在寻找当readyState达到4时,HTTP状态为200才能成功.
要激活它,请在主页完成加载到UIWebView中时加载下面的javascript,并查看您的委托是否触发请求和响应.
var s_ajaxListener = new Object(); s_ajaxListener.tempOpen = XMLHttpRequest.prototype.open; s_ajaxListener.tempSend = XMLHttpRequest.prototype.send; s_ajaxListener.callback = function () { console.log('mpAjaxHandler://' + this.url); window.location='mpAjaxHandler://' + this.url; }; s_ajaxListener.callbackDone = function (state,status) { console.log('mpAjaxHandlerDone://' + state + ':' + status + '/' + this.url); window.location='mpAjaxHandlerDone://' + state + ':' + status + '/' + this.url; }; // Added this function to catch the readyState changes and request // fake page loads. function override_onreadystatechange(){ s_ajaxListener.callbackDone(this.readyState); this.original_onreadystatechange(); } XMLHttpRequest.prototype.open = function(a,b) { if (!a) var a=''; if (!b) var b=''; s_ajaxListener.tempOpen.apply(this,arguments); s_ajaxListener.method = a; s_ajaxListener.url = b; if (a.toLowerCase() == 'get') { s_ajaxListener.data = b.split('?'); s_ajaxListener.data = s_ajaxListener.data[1]; } } XMLHttpRequest.prototype.send = function(a,b) { if (!a) var a=''; if (!b) var b=''; s_ajaxListener.tempSend.apply(this,arguments); if(s_ajaxListener.method.toLowerCase() == 'post')s_ajaxListener.data = a; s_ajaxListener.callback(); // Added this to intercept Ajax responses for a given send(). this.original_onreadystatechange = this.onreadystatechange; this.onreadystatechange = override_onreadystatechange; }
我已经在浏览器中尝试了这个,将代码粘贴到此W3Schools演示中的loadDoc()方法的顶部并查看javascript控制台. http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first.如果你首先尝试这个注释掉两个window.location =行.
希望这会有所帮助或为您提供一个开始.
以上是大佬教程为你收集整理的ios – 如何从UIWebView中的最终表单步骤获取/处理ajax响应?全部内容,希望文章能够帮你解决ios – 如何从UIWebView中的最终表单步骤获取/处理ajax响应?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。