我正在尝试使用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行“数据:否]
什么......?
答案 0 :(得分:1)
您尝试输出的字符串未引用。尝试:
success: function(data){ msg = <?php echo "data.msg;"; ?> },
我真的没有看到这一点,为什么不这样做:
success: function(data){ msg = data.msg },
答案 1 :(得分:1)
在success
回调中,您正在混合使用Javascript和PHP代码;这可能不是你想要做的。
你必须意识到:
挂钩在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
的网址是否有效?
例如: