我正在我的应用程序的UIWebView中打开一个简单的HTML文档:
<h3>Testing Put</h3>
<form id="testPut" action="onPut">
<div>
<p><input type="text" id="putValue" name="putValue" value="some value string goes here" size="100"/></p>
<p><input type="submit" value="Submit via PUT"/></p>
</div>
</form>
<script>
$('#testPut').submit(function(ev) {
ev.preventDefault();
var value = $('#putValue').val();
$.ajax({
type: "PUT",
url: "data/info/put",
contentType: "text/plain; charset=utf-8",
data: encodeURIComponent(value),
dataType: "text"
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
为了简单起见,我从代码中省略了成功和错误处理程序,因为我的问题与真正回复请求无关。
我正在使用jQuery 1.10.2,但是使用纯XMLHttpRequest对象时却得到完全相同的结果。
由于这是Ajax请求无法被UIWebViewDelegate方法捕获的已知问题,因此我决定创建一个非常简单的后代NSURLProtocol并将其注册到控制器的-viewDidLoad方法中:
@implementation MyProtocol
+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
// only "data/info" requests are welcome
NSRange range = [[request.URL absoluteString] rangeOfString:@"data/info"];
return NSNotFound != …Run Code Online (Sandbox Code Playgroud)