Ajax 不适用于 javascript。我应该做些啥?

Posted

技术标签:

【中文标题】Ajax 不适用于 javascript。我应该做些啥?【英文标题】:Ajax not working with javascript. What am I supposed to do?Ajax 不适用于 javascript。我应该做些什么? 【发布时间】:2012-05-12 05:15:37 【问题描述】:

这是我调用 Ajax 请求的代码,而不是一个简单的输入按钮,它在 onClick 事件上将一些数据发送到一个名为 setValue() 的函数;

这是代码(JS): //请求ajax XML

<script type='text/javascript'>
function callAjax()
var XMLObj = false;

if(window.XMLHttpRequest)
    XMLObj = new XMLHttpRequest();
else if(window.ActiveXObject)
    XMLObj = new ActiveXObject('Microsoft.XMLHTTP');

if(!XMLObj)
    return false;

return XMLObj;

//var 为 ajaxobject 句柄;

var objAjax = callAjax();

function setValue(value, id, num, item)
if(objAjax)
   if(objAjax.readyState == 4 || objAjax.readyState == 0)
       objAjax.open('POST', 'addview.php', true);
       objAjax.send('value=' + val + '&id='+id+'&num='+num+'&item='+item);
   


//向函数setValue()发送值的输入;

<input type='button' onClick='setValue(1, 2, 3, 4)' />

//这是我通过php处理发送数据的地方

<?php
if(!$_POST['value'] || !$_POST['id'] || !$_POST['num'] || !$_POST['item'])
    exit();

include('config.php');

$value = mysql_real_escape_string($_POST['value']);
$id = mysql_real_escape_string($_POST['id']);
$num = mysql_real_escape_string($_POST['num']);
$item = mysql_real_escape_string($_POST['item']);

mysql_query("UPDATE `window` SET window_val = window_val + ".$value." WHERE window_id = '".$id."' AND window_num = '".$num."' AND window_item = '".$item."' ") or die(mysql_error() );
mysql_close($con);
?>

php 脚本正在运行,我尝试手动发送数据 ($_GET['']) 并且它正在运行。我还用 alert('value='+value+'&id='+id...) 检查了 URL,所有变量都正常,但不会查询数据库。

如果你看到了,我没有添加任何响应功能,从服务器回复。我只想发送这些数据并查询数据库。

谢谢!

【问题讨论】:

您可以切换到经过良好测试的框架,该框架已经具有可靠的 ajax 功能,例如 jQuery。 我同意 asawyer 的观点。您是否介意我们提供 jQuery 示例帮助,或者您真的需要将其作为原始 xmlhttprequest 进行(可能出于学术目的)? 如果$_POST['value'] 不存在,则调用$_POST['value'] 会引发警告,您应该使用if (isset($_POST['value']) ) 没关系。请给我一些例子。谢谢! 【参考方案1】:

你可能错过了

objAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded");

考虑改进您的函数名称:callAjax 不调用 Ajax,它返回对 XHR 对象的引用。称它为getXhr 或更像它实际在做的事情。

如果你对 jQuery 没问题,只需调用

function setValue(value, id, num, item)
    $.post('addview.php', 'value=' + val + '&id='+id+'&num='+num+'&item='+item);
    // or the cleaner version
    $.post('addview.php', value: val, id: id, num: num, item:item);

【讨论】:

以上是关于Ajax 不适用于 javascript。我应该做些啥?的主要内容,如果未能解决你的问题,请参考以下文章

文件上传正在使用 Postman,但不适用于从浏览器运行的 Javascript

Javascript 适用于 FF / IE 但不适用于 Chrome / Safari

Ajax POST 不适用于 spring security csrf,但 GET 方法有效

零配置jQuery Datatable默认分页不适用于大表

添加 FriendlyUrls 时,jQuery ajax 调用不适用于 ASP.Net Web 窗体

Javascript Intellisense 不适用于功能参数 [关闭]