我正在尝试调用一个接受 JSON 并以 JSON 响应的 .NET API。
我有一个 JavaScript 示例,它仅适用于 IE。
但是当我尝试将代码转换为 jQuery / AJAX 调用时,我无法使其工作。
我已经尝试了所有我能想到的参数组合,但没有成功。
这是有效的 IE 代码。
<script language="javascript" type="text/javascript">
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
function callService() {
var url = "http://hrdtssiw01:8700/JsonWCF/DoJsonWork"; //use this url on RDN server for access.
var body = '{"LevelOneString":"hello world","LevelTwoClass":{"LevelThreeClass":{"LevelThreeString":"Hello Level Three"},"LevelTwoString":"Hello Level Two"}}';
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/json");
xmlHttp.send(body);
}
// Create result handler
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
alert('working!!!!');
document.getElementById("Text1").value = xmlHttp.responseText;
}
}
</script>
这是jQuery代码......
<script>
function callAjax() {
jQuery.support.cors = true;
var temp_url = 'http://hrdtssiw01:8700/JsonWCF/DoJsonWork';
var temp_data = '{"LevelOneString":"hello world","LevelTwoClass":{"LevelThreeClass":{"LevelThreeString":"Hello Level Three"},"LevelTwoString":"Hello Level Two"}}';
$.ajax(temp_url,
{
'type': 'POST',
'data': temp_data,
'dataType': 'json',
'processData': false,
//'contentType': 'application/json; charset=utf-8',
'headers': {'contentType':'application/json'},
'success': function(data) { alert('data: ' + data); },
'error': function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
$(document).ready(function() {
$('#thebutton').click(function() { callAjax(); return false;});
});
</script>
在 jQuery 示例中,我将 contentType 注释掉了。
如果我包含 contentType,则请求将作为 JSON 发送,但未设置正文。如果我注释掉 contentType,则正文设置正确,但 contenType 设置为默认值。
我怎样才能使这项工作?