将Jquery Ajax转换为Javascript Ajax

将Jquery Ajax转换为Javascript Ajax,javascript,ajax,Javascript,Ajax,我在网上找到了一个我想使用的脚本。它在使用jQuery1.11时可以正常工作,但我正在学习PHP、CSS和正确的HTML语法,现在不需要学习jquery 这是在my index.html文件中找到的jquery: $.ajax({url: 'timezone_detect.php', data: getTimeZoneData(), method: 'POST', dataType: 'JSON'}).done(function(data) { $('#timezone').html(data)

我在网上找到了一个我想使用的脚本。它在使用jQuery1.11时可以正常工作,但我正在学习PHP、CSS和正确的HTML语法,现在不需要学习jquery

这是在my index.html文件中找到的jquery:

$.ajax({url: 'timezone_detect.php', data: getTimeZoneData(), method: 'POST', dataType: 'JSON'}).done(function(data)
{
$('#timezone').html(data);
$('#timezone1 option[value="' + data + '"]').attr('selected','selected'); */
});
这是timezone_detect.php文件的php代码:

require './php/timezone.php';
if(!isset($_POST['offset']) || !isset($_POST['dst'])) {
 die('Invalid request.');
}
$offset = $_POST['offset'];
$dst = $_POST['dst'];
echo json_encode(Timezone::detect_timezone_id($offset, $dst));
这是getTimeZoneData的JS代码:

function getTimeZoneData()
{
var today = new Date();
var jan = new Date(today.getFullYear(), 0, 1);
var jul = new Date(today.getFullYear(), 6, 1);
var dst = today.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
return{offset: -today.getTimezoneOffset() / 60, dst: +dst};
}
有人能看出我哪里出错了吗?我认为这与getTimeZoneData部分有关

谢谢你的帮助

编辑:我尝试了ajax.sendgetTimeZoneData,但firebug报告了这样一条长错误消息:NS\u error\u XPC\u JSOBJECT\u没有函数\u名为:'JavaScript组件在调用方法:[nsInputStream::available]时没有名为:available'的方法

第二次编辑:我已将代码更改为: 函数ajaxTimeZoneid、showid、sqlid、query { var ajax=getXmlHttpRequestObjectsqlid; iftypeof ajax==“对象” { ajax.onreadystatechange=函数 { ifajax.readyState==4 { alertajax.statusText; document.getElementByIdshowid.innerHTML=ajax.responseText; } } openPOST,查询,true; ajax.sendgetTimeZoneData; } }


使用此代码,警报将不会触发。当我从ajax.send命令中删除getTimeZoneData时,我会得到一个“无效请求”错误。我应该如何处理getTimeZoneData函数???

您确实意识到拒绝jquery是将您拥有的javascript代码量乘以大约10?为什么是ajax.sendnull?为什么不发送getTimeZoneData,因为它显然是您应该发送的?@njzk2 ajax请求不是使用jQuery的好理由。这是因为缺少10行代码保护程序而浪费的90kb代码吗?使用jQuery有太多的开销是可以的,但是支持IE5和IE6似乎没有用。我不太赞成重新发明轮子。如果我想抛弃jQuery,我仍然会得到某种AJAX包装器,因为它们非常丰富。您可以使用它:或者您可以只使用ajax模块编译您自己的jQuery版本。
window.onload=function()
{
 ajaxTimeZone('timezone1', 'select_error', 'sql_error', 'timezone_detect.php')
}

function ajaxTimeZone(id, showid, sqlid, query)
{
 var ajax = getXmlHttpRequestObject(sqlid);
 if(typeof ajax == 'object')
 {
  ajax.onreadystatechange = function(getTimeZoneData)
  {
   if(ajax.readyState == 4)
   {
    document.getElementById(showid).innerHTML = ajax.responseText;
   }
  }
  ajax.open("POST", query, true);
  ajax.send(null);
 }
}

function getXmlHttpRequestObject(sqlid)
{
 if(window.XMLHttpRequest)
 { // for IE7+, Firefox, Chrome, Opera, Safari
  return(new XMLHttpRequest());
 }
 else if(window.ActiveXObject)
 { // for IE5 and IE6
  return(new ActiveXObject("Microsoft.XMLHTTP"));
 }
 else
 { // a browser not equipped to handle XMLHttp
  document.getElementById(sqlid).innerHTML = 'Status: Cound not create XmlHttpRequest Object. Consider upgrading your browser.';
 }
}