如何在 javascript/jquery 中发出 ajax 请求

Posted

技术标签:

【中文标题】如何在 javascript/jquery 中发出 ajax 请求【英文标题】:how to make a ajax request in javascript/jquery 【发布时间】:2014-03-27 04:59:59 【问题描述】:

我是 javascript 和 jQuery 的新手。我想将图像发送到 RTTI 服务器。我在本机 ios 中完成了相同的任务,如下所示。

NSData *checkData = [NSData dataWithBytes:[self getImageFileBuffer]length:self.imageFileBufferSize];
NSString *extractionURLString = [[NSUserDefaults standardUserDefaults] valueForKey:@"serverAddress"];
NSURL *checkExtractionServerURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@/mobilesdk/api/CheckDeposit",extractionURLString]];<br/>
NSMutableURLRequest  *urlRequest = [NSMutableURLRequest requestWithURL:checkExtractionServerURL cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:30];
[urlRequest setHTTPMethod:@"PUT"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[urlRequest setValue:@"image/tiff" forHTTPHeaderField:@"Content-Type"];
[urlRequest setHTTPBody:checkData];<br/>
NSURLConnection *checkConn = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:NO];
[checkConn scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
[checkConn start];

我必须在 JavaScript/jQuery 中完成上述任务。我尝试了很多,但没有得到解决方案。我的 JavaScript 代码如下。

var xhr4 = new XMLHttpRequest();
xhr4.open("POST", URL4, true);
xhr4.setRequestHeader('Content-Type', 'image/tiff');
xhr4.setRequestHeader('Accept','application/json');
xhr4.setRequestHeader('Content-Length',imageObjectData.length);
xhr4.onload = function (e4) 
    alert(e4.target.responseText);
;
xhr4.send(imageObjectData);

请任何人帮助我。 提前致谢。

【问题讨论】:

【参考方案1】:

使用onreadystatechange 代替onload 之类的,

var xhr4 = new XMLHttpRequest();
xhr4.open("POST", URL4, true);
xhr4.setRequestHeader('Content-Type', 'image/tiff'); 
xhr4.setRequestHeader('Accept','application/json');
xhr4.setRequestHeader('Content-Length',imageObjectData.length);
xhr4.onreadystatechange = function ()  // use onreadystatechange 
     alert(xh4.responseText); // use xh4.responseText
;
xhr4.send(imageObjectData);

【讨论】:

【参考方案2】:

使用beforeSend 设置jquery Ajax 中的标头。

$.ajax(
        beforeSend: function(xhrObj)
                xhrObj.setRequestHeader("Content-Type","image/tiff");
                xhrObj.setRequestHeader("Accept","application/json");
        
        type: "PUT",
        url: URL4,
        processData: false,
        data: jsonData,
        dataType: "json",
        success: function(json)
               // do something with response `json`...
        
);

【讨论】:

以上是关于如何在 javascript/jquery 中发出 ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript/jQuery:在 CodePen 中设置 IP 地理定位 API

web前端--html/css/javaScript/jQuery学习总结

JavaScript / jQuery:如何在 Firefox 中获取选定的文本

如何在 JavaScript / jQuery 中合并两个函数?

如何在 JavaScript/jQuery 中查找数组是不是包含特定字符串?

如何在 Javascript/jQuery 中重置超时?