JSON を受け入れて JSON で応答する .NET API を呼び出そうとしています。
IE のみで動作する JavaScript の例があります。
しかし、コードを 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 はデフォルトに設定されます。
どうすればこれを機能させることができますか???