jQuery:使用未定义的常量数据假设'数据'

时间:2010-04-23 15:18:15

标签: php jquery

我正在尝试使用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(现已更正)。但是,我现在得到这个更加神秘的错误信息:

未捕获的异常:[Exception ...“组件返回失败代码:0x80070057(NS_ERROR_ILLEGAL_VALUE)[nsIXMLHttpRequest.open]”nsresult:“0x80070057(NS_ERROR_ILLEGAL_VALUE)”location:“JS frame :: http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js :: anonymous ::第19行“数据:否]

什么......?

2 个答案:

答案 0 :(得分:1)

您尝试输出的字符串未引用。尝试:

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

我真的没有看到这一点,为什么不这样做:

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

答案 1 :(得分:1)

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

你必须意识到:

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


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

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

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

即。这里没有PHP代码。



在评论+编辑OP后编辑

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

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

例如:

  • 它不应该是空的
  • 它应指向与您的应用程序位于同一域名的URL