2014-02-07 33 views
2

我读过几十个相关的帖子,但我仍然无法得到它的工作。如何提醒阿贾克斯响应

我想提醒我从PHP获得的jQuery中的响应。

PHP:

$msg=array(); 

    if(empty($whatever)){ 
     $msg['cenas']="Não há contas"; 
    }else{ 
     $msg['cenas']="Há contas"; 
    }; 

    echo json_encode($msg); 

JS:

$.ajax({ 
    url: 'myscript.php', 
    dataType: 'json', 
    success: function(response){ 
     alert(response.cenas); 
    } 
}); 

PHP的呼应

{cenas: “哈contas}” 但我不能让它以提醒JS。

+3

使用firebug或chrome开发者工具记录警报而不是'console.log(response)'。这将揭示你的整个对象的反应,并让你看看有什么不对。 –

+0

@ HarveyA.Ramer console.log(response)返回“成功” –

+1

这意味着,我相信你只是从成功的myscript.php文件返回一个字符串。在这种情况下,你需要修改它以返回一个对象来做你想做的事情。这可能是有益的:http://stackoverflow.com/questions/8649621/returning-a-json-object-from-php-in-ajax-call –

回答

3

php应该回显{"cenas": "Há contas"},但是你在警报中得到了什么?你有没有定义?如果是这样,请在提醒之前尝试使用jQuery.parseJSON。例如:

$.ajax({ 
    url:"myscript.php", 
    dataType: "json", 
    success:function(data){ 
     var obj = jQuery.parseJSON(data); 
     alert(obj.cenas); 
    } 
}); 
+0

没错,我弄不明白。根据您的建议,成功功能永远不会执行,因此没有警报。 –

1

尝试

$.ajax({ 
    url:"myscript.php", 
    dataType: "json", 
    success:function(data){ 
     alert(data.cenas); 
    } 
}); 

你有一个语法错误。

时退房Docs for $.ajax

+4

响应/数据无关紧要。他们只是参数名称。它们是任意的。你可以把它命名为x并且没关系 –

+0

邪恶的,我会把它拿出来的。并非100%确定。 –

1

你应该告诉jQuery的期待(和解析)JSON的响应(虽然jQuery的可能正确地猜测这...),你应该正确地写你的JavaScript:

$.ajax({ 
    url: 'myscript.php', 
    dataType: 'json', 
    success: function(response){ 
     alert(response.cenas); 
    } 
}); 
+0

谢谢,我刚刚编辑了我的问题。我在ajax调用中包含dataType:'json' –

+0

@NunoNogueira检查你和我的ajax调用之间的区别(函数的括号,引用字符串等)。 – jeroen

+0

我那个,我弄不明白 –