当给出ip而不是localhost时,Ajax会抛出语法错误

时间:2010-06-01 06:20:36

标签: ajax cakephp

我正在开发cakephp。 我开发了一个应用程序,我在所有ajax帖子中使用localhost并获得..

                  var ht = $.ajax({
                          type: "GET",
                          url: "http://localhost/FormBuilder/index.php/forms/getInvitees/<?php echo $emailid;?>",
                          async: false
                    }).responseText;


                     var myObject = eval('(' + ht + ')');

这个东西只有在我放置localhost时才有用。但是当我把它改成我的Ip时 http://111.11.11.11/FormBuilder/index.php/forms/getInvitees/”,  然后我在行中得到语法错误()                 var myObject = eval('('+ ht +')');

为什么会这样?请提出有价值的建议来解决这个问题。

对ht的回应是          { “被邀请者”:[{ “被邀请者”: “23”}]} 从中我将通过

生成一个链接
                     var data = myObject;
                 $.map(data.invitees, function(i){ 
                                 var id=i.invitee;

                        $("<a href=<?php echo $link?>/"+id+"/Invitee> <?php echo $link?>/"+id+"/Invitee</a>").appendTo("#"+inc);
                        inc++;                                 

                return i.invitee;});  

谢谢

3 个答案:

答案 0 :(得分:0)

您知道localhost几乎在任何情况下都会转换为127.0.0.1。您是否确保将网络服务器设置为正确绑定到111.11.11.11并提供相同的DocumentRoot?

通过IP调用服务器时,看起来没有得到JSON对象。

修改

我不知道您是否使用VirtualHosts来设置开发环境,但由于您正在使用localhost,我将使用Apache的标准httpd.conf。

httpd.conf文件中搜索以Listen ...开头的行。确保具有Listen指令的唯一行看起来像Listen *:80,以允许Apache将自身绑定到您计算机上可用的任何IP。

然后,在文件末尾附近插入以下内容:

<VirtualHost *>
    ServerName myfoo.com
    ServerAdmin admin@myfoo.com
    DocumentRoot "C:/..path to your working directory/"        
</VirtualHost>

现在,您已经成功实施了一个VirtualHost,它为同一个DocumentRoot(您的HTML / PHP /任何文件所在的目录)提供localhost以及您的机器所分配的任何其他IP。

祝你好运。

答案 1 :(得分:0)

在这种情况下,肯定使用localhost更通用吗?

在我的CakePHP应用程序中,我使用:

'http://localhost/cakeapp/nodeDescriptors/ajaxSetStatus'

'/cakeapp/nodes/updateTreeNodes'

用于AJAX调用。 请记住,如果您尝试直接访问其他域,则会遇到问题。也许这就是你的基于IP的电话会发生什么?

答案 2 :(得分:0)

Localhost只能在您的本地计算机上运行,​​但请注意,您的应用程序最终将从外部访问,其中localhost将是客户端计算机..

如果对Intranet应用程序使用内部DNS,则需要指定公共IP地址或域名或网络名称。