将Jquery Ajax转换为Javascript Ajax
我在网上找到了一个我想使用的脚本。它在使用jQuery1.11时可以正常工作,但我正在学习PHP、CSS和正确的HTML语法,现在不需要学习jquery 这是在my index.html文件中找到的jquery:将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)
$.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.';
}
}