【问题标题】:jQuery: Use of undefined constant data assumed 'data'jQuery:使用未定义的常量数据假定为“数据”
【发布时间】:2010-04-23 15:18:14
【问题描述】:

我正在尝试使用 jQuery 将同步 AJAX 发布到服务器,并返回 JSON 响应。

我想在成功返回时设置一个 javascript 变量 msg

这是我的代码的样子:

$(document).ready(function(){
    $('#test').click(function(){
    alert('called!');
    jQuery.ajax({
      async: false,
      type: 'POST',
      url: 'http://www.example.com',
      data: 'id1=1&id2=2,&id3=3',
      dataType: 'json',
      success: function(data){ msg = data.msg; },
      error: function(xrq, status, et){alert('foobar\'d!');}
     });
});

[编辑]

我在以前的 xode 中不小心混合了 PHP 和 Javascript(现已更正)。然而,我现在得到这个更神秘的错误信息:

未捕获的异常:[异常...“组件返回失败代码:0x80070057(NS_ERROR_ILLEGAL_VALUE)[nsIXMLHttpRequest.open]”nsresult:“0x80070057(NS_ERROR_ILLEGAL_VALUE)”位置:“JS框架::http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js::匿名::第 19 行”数据:无]

什么...?

【问题讨论】:

  • 您的 PHP 脚本是否打印出有效的 JSON 格式文本?

标签: php jquery


【解决方案1】:

在您的 success 回调中,您正在混合 Javascript 和 PHP 代码;这可能不是您想要做的。

你必须知道:

  • PHP 在服务器端执行;对于 .php 文件
  • Javascript 在客户端执行(浏览器)


挂在success回调上的函数只会在客户端执行,没有PHP执行;它会在服务器端接收PHP脚本发送的数据(接收Ajax请求的那个)

挂在success 上的函数接收到的data 是一个Javascript 对象。
这意味着,在这里,您可能想要使用这样的东西:

success: function(data){ msg = data.msg; },

即这里没有 PHP 代码。



在评论+编辑OP后编辑

您收到“NS_ERROR_ILLEGAL_VALUE nsIXMLHttpRequest.open”错误;这意味着,我想,您正在向 Ajax 请求传递某种非法 URL。

您确定您传递给jQuery.ajax 的网址是有效的吗?

例如:

  • 不能为空
  • 它应该指向与您的应用程序在同一个域名上的 URL

【讨论】:

  • @pascal:再次发现(像往常一样),我刚刚尝试并找到了原因,并且即将删除我的最后一次编辑。 url 是一个空字符串。
【解决方案2】:

您尝试输出的字符串没有被引用。试试:

success: function(data){ msg = <?php echo "data.msg;"; ?> },

我真的不明白这一点,为什么不这样做:

success: function(data){ msg = data.msg },

【讨论】:

    猜你喜欢
    • 2018-12-17
    • 2016-02-29
    • 2015-07-11
    • 2014-05-07
    • 2014-04-30
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多