使用jquery从javascript到php进行AJAX调用

作品:

    function jsUpvote(photo_id, username) {

        //var getURL = "http://www.uglyfacez.com/gallery/upvote.php?photo_id=" + photo_id + "&username=" + username;

        $.get("http://uglyfacez.com/gallery/upvote.php?photo_id=15&username=user000",
            function(returnValue){
               //do stuff here
        });
    }

我编写了上面的函数来在页面上运行php脚本,并通过URL将变量photo_id和username传递给脚本。当我硬编码时,如上所述,它工作得很好,但是当我给它javascript变量时(正如你在getURL中看到的那样),它根本不起作用。例如,这是我想要做的,但不起作用:

$.get("http://www.uglyfacez.com/gallery/upvote.php?photo_id=" + photo_id + "&username=" + username,
            function(returnValue){
               //do stuff here
        });

为什么这不起作用,解决方案是什么?

编辑:我发现了问题所在。出于某种原因,在我的GET url中包含www使其无法接收来自服务器的响应。一旦从URL中删除,它就可以正常工作。

1
@RussellStrauss:Tomalak试图说“它不起作用”是一个完全没用的陈述,并没有帮助解决问题。通常期望OP提供有关错误的完整信息,并在发布之前显示调查问题的一些努力。其他人正在花时间来解决这个问题,因此OP方面的一些最小努力是非常受欢迎的。
额外 作者 Tadeck,
我很抱歉你有这种感觉,但如果它奏效了,我就不会在这里。
额外 作者 aleroxac,
对不起,我的意思是“代码块没有执行,我无法弄清楚原因。”我没有意识到我第一次没有提到这个问题。
额外 作者 aleroxac,

3 答案

这似乎是关于跨域请求的问题。

您可以使用某些解决方案,例如 JSONP ,也可以从其他域加载脚本(在本例中为 www 子域)。要查看有关跨域的不同方面和设置,请转到 .ajax()</代码>文档页面(并搜索“跨域”或“ crossDomain ”)。

该问题基本上是与同源政策相关的问题。在提到的文档页面上,您可以阅读:

      
  • 由于浏览器安全限制,大多数“Ajax”请求受同源政策的约束。 ;请求无法成功从其他域,子域或协议中检索数据。
  •   
  • 脚本和JSONP请求不受相同的原始策略限制。
  •   
2
额外

这是jquery .get函数的sysntax:

jQuery.get(url [,data] [,success(data,textStatus,jqXHR)] [,dataType])

就像是:

$.get("http://www.uglyfacez.com/gallery/upvote.php", {'photo_id':photo_id,'username':username},
            function(returnValue){
               //do stuff here
        });

尝试按照语法首先将数据放在函数的参数上,我认为这个链接也可能对你有所帮助:

http://api.jquery.com/jQuery.get/

或者,如果您仍然遇到相同的问题,请尝试再次在浏览器上手动打开链接,并检查它是否返回任何错误,以确保它返回您的预期输出。 :)

1
额外
你是否在触发代码时看到firebug上的任何错误,如果它在你执行请求的实际网站上运行正常然后它是由你的javascript代码上的错误引起的,如果firebug返回任何javascript错误它将是如果你在这里发布它更好,所以我们可以更容易地发现问题:)
额外 作者 Christopher Pelayo,
别客气。 :)
额外 作者 Christopher Pelayo,
在我的浏览器中手动打开链接工作正常,不会导致任何错误。这就是我知道我的.get调用存在问题的方法。
额外 作者 aleroxac,
这也回答了我遇到的另一个问题,谢谢
额外 作者 aleroxac,

你正确设置photo_id和用户名吗?更多代码可能有帮助。什么是错误消息?您使用Firebug或Chrome来查看是否收到错误?好像photo_id和/或用户名没有正确传递。

0
额外
是的,photo_id和用户名都被传入并正确设置。如果我做警报(getURL);它给了我我想要的确切网址。如果我传入15表示photo_id而user000表示用户名,它会给我上面写的确切网址。没有任何代码可以提供我正在使用的代码。您可以在此处看到错误: i.imgur.com/Rujzb.png 中的代码function(returnValue)块根本不运行。我正在使用Firebug进行调试。
额外 作者 aleroxac,
这是我的下一个问题。您是否使用任何类型的工具来查看从URL发送或返回的内容?我仍然在想,也许有一个空间或某些东西被遗漏。
额外 作者 Jamie R Rytlewski,