我正在使用XMLHttpRequest
进行AJAX调用。
它在IE7中运行良好,但是当我在Firefox中尝试相同时,我无法通过response.write
我正在使用以下功能:
<script type="text/javascript">
function ddSelect_Change() {
var xmlhttp;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
}
}
}
xmlhttp.onreadystatechange = function () {
//alert(xmlhttp.responseText);
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
}
}
var url = "http://" + location.hostname + "Locationurl?Method=methodname";
xmlhttp.open("POST", url);
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send();
}
ADDED
我有两个单独的Web应用程序,一个是tridion Web应用程序,另一个是自定义Web应用程序。我正在从tridion Web应用程序到自定义Web应用程序进行交互。这两个网址都有不同的域名和状态我在firefox中得到0,而对于readystate我没有得到(3)我的警报。
答案 0 :(得分:3)
到目前为止,您展示的代码应该可以在Firefox中使用。 Firefox支持XHR。
这可能会有所帮助:https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started
<强>更新强>
在AJAX调用期间, onreadystatechange
被多次触发,因此您可能希望将回调扩展为以下内容:
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState === 4) {
if (xmlhttp.status === 200) {
alert(xmlhttp.responseText);
} else {
alert('There was a problem with the request.');
}
}
}
xmlhttp.readyState === 4
验证请求是否已完成,以便您在实际拥有响应之前不要尝试提醒响应。 xmlhttp.status === 200
验证您是否从服务器收到200 OK
,以确保没有服务器端错误,或者网址不正确。
答案 1 :(得分:1)
您是否考虑使用像jQuery这样的库?它已经为你解决了这些问题。
如果您正在使用SDL Tridion GUI扩展,请查看PowerTools项目以获取大量示例。 (http://code.google.com/p/tridion-2011-power-tools/)