2011-11-12 81 views
1

作品到PHP:使得AJAX JavaScript调用使用jQuery

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和用户名传递给脚本。当我硬编码它,如上所述,它工作得很好,但是当我给它的JavaScript变量(你可以在getURL中看到),它根本不会工作。例如,这就是我想做的事,但将无法工作:

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

为什么这不工作,如何解决?

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

+0

对不起,你觉得这样,但如果它的工作,我不会在这里。 –

+0

@RussellStrauss:Tomalak试图说“_it不工作_”是一个完全无用的陈述,并没有帮助解决问题。通常预期OP会提供有关错误的完整信息,并在发布之前展示一些调查问题的努力。其他人正在投入时间解决问题,所以OP的一些最小努力非常受欢迎。 – Tadeck

+0

对不起,我的意思是“代码块没有执行,我找不到原因”。我没有意识到我第一次没有提到这一点。 –

回答

2

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

你可以使用一些解决方案,例如JSONP也可以加载脚本从不同的域(在这种情况下:www子域)。要查看有关跨域的不同方面和设置,请转到the .ajax() documentation page(并搜索“跨域”或“跨域”)。

该问题基本上与相同的原产地策略有关。在mentioned documentation page你可以阅读,认为:

  • 由于浏览器的安全限制,大多数“Ajax”的请求都受到了same origin policy;该请求无法成功从不同的域,子域或协议中检索数据。
  • 脚本和JSONP请求不受相同的源策略限制。
0

你是否正确设置了photo_id和username?更多的代码可能有帮助什么是错误信息?您是否使用Firebug或Chrome来查看您是否收到错误?似乎没有正确传入photo_id和/或用户名。

+0

是的,photo_id和username都被传入并正确设置。如果我确实提醒(getURL);它给了我想要的确切网址。如果我在15中传递photo_id和user000作为用户名,它会给我上面写的确切URL。 没有更多的代码给我使用。您可以在这里看到错误: http://i.imgur.com/Rujzb.png 函数(returnValue)块中的代码根本不运行。我正在使用Firebug进行调试。 –

+0

这是我的下一个问题。您是否正在使用任何类型的工具查看从URL发送或返回的内容?我仍然在想,也许有一个空间或者错过了一些东西。 –

1

下面是jquery的。获得功能sysntax:

jQuery.get(URL [,数据] [,成功(数据,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/

或者,如果你仍然遇到了同样的问题再次尝试手动打开浏览器上的链接,并检查其是否返回任何错误只是要确保它返回你期望的输出。:)

+0

在我的浏览器中手动打开链接工作得很好,不会造成任何错误。这是我知道这是我的.get调用的问题。 –

+0

当代码被触发时,如果它在实际网站上运行良好,那么它会在JavaScript代码中出现错误,如果萤火虫正在返回任何JavaScript错误,它会在萤幕上看到任何错误如果你在这里发布它会更好,所以我们可以更容易地发现问题。 :) –

+0

这也回答了我的一个不同的问题,谢谢 –