无法获得简单的jQuery.Ajax调用

时间:2012-03-10 19:45:46

标签: javascript json jquery

我对web-dev世界很陌生,而且我正忙着一个简单的jQuery.ajax调用工作。这是电话:

var url = "http://client.the_url.com/get_account_data.php";  

$.ajax({
  url: url,
      dataType: 'json',
      success: function(resultsData){
        resultsDataString = JSON.stringify(resultsData, null, 4);
        alert("We're finally making the call.");
      },
      error:function (xhr, ajaxOptions, error){
          alert("Error");
      } 
});

我可以将网址复制并粘贴到浏览器中,然后呈现我的期望:

{
    "id":"Level 3.xpusdscah",
    "type":"Level 3",
    "name":"xpusdscah",
    "total":0,
    "in":0,
    "out":0
}

相反,我每次都会收到错误提醒。 :/

我正在点击的php脚本以标题开头:

header('Content-type: application/json');

我试图将params传递给php脚本,但现在我甚至没有这样做。我认为这应该是一个“没脑子”,但如果是,那么我没有大脑。我正在试图弄清楚如何使用wireshark,但我是否真的需要使用wireshark来调试一个简单到调用php文件的调用?

任何人都可以帮助我吗?我真正希望的是“嗯 duh ,你没有做(在这里插入明显的解决方案)!

提前致谢,
初出茅庐的Web开发人员

3 个答案:

答案 0 :(得分:0)

首先,你的回调函数没用。它每次只显示文本“错误”。您希望实际显示错误,例如:

$.ajax({
  url: url,
      dataType: 'json',
      data: data,
      success: function(resultsData){
        resultsDataString = JSON.stringify(resultsData, null, 4);
        alert("We're finally making the call.");
      },
      error:error(jqXHR, textStatus, errorThrown){
          alert("Error:" + textStatus+ "," + errorThrown);
      } 
});

错误回调的参数名称奇怪。文档说第二个参数是文本错误代码,errorThrown是Web服务器提供的HTTP状态代码。请参阅此处的文档:http://api.jquery.com/jQuery.ajax/

接下来,您将要获取数据包嗅探器。这将允许您检查进出Web服务器的数据包,并查看它正在抛出的错误消息。一个好的免费选项是Fiddler

答案 1 :(得分:0)

您发送的数据不是json。

var data = "login="+localLogin+"&pw="+localPassword+"&forAccount="+forAccount+"&forAccountType="+forAccountType+"&topAccount="+topAccount+"&fromDate="+fromDate+"&toDate="+toDate;

应该是这样的:

var data = '{"Key1":"' + Value1 + '","Key2":"' + Value2 .... + '""}';

也许您应该将类​​型添加为POST和内容类型,如下所示:

$.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: ....

答案 2 :(得分:0)

试试这些:

  • 检查控制台上的“网络”选项卡。
  • 复制并粘贴响应并在控制台命令行中解析它以验证JSON是否格式正确。
  • 显示更详细的错误说明。