【问题标题】:PHP web service not working from jQuery AJAXPHP Web 服务不能从 jQuery AJAX 工作
【发布时间】:2012-08-20 11:53:03
【问题描述】:

我在 jomsocial 环境中创建了 Restful 网络服务。 它在本地机器上。 当我使用 REST 控制台对其进行测试时,它会返回响应。

形成的本地网址是...

http://localhost:5454/kisan-06/index.php?option=com_api&format=raw&app=users&resource=login&key=dfd8a84f8cdce807ae1d30a838415ea37eaa075c

问题:

当我使用 jQuery.ajax 调用相同的函数时,总是会调用错误回调函数。

Ajax 调用是...

$.ajax({
    type: "POST",
    url: "http://localhost:5454/kisan-06/index.php?option=com_api&format=raw&app=users&resource=login&key=dfd8a84f8cdce807ae1d30a838415ea37eaa075c",
    data: "{ username: 'sai.kiks2@gmail.com', password: '123456'}",
    contentType: "application/json; charset=utf-8",
    cache : false,
    dataType: "json",
    success: function(data) {
        alert("in success");
    },
    error: function(jqXHR,error, errorThrown){
        //alert("There was an error loggin in");
        alert("responseXML ",jqXHR.responseXML);
        alert("responseText: ",jqXHR.responseText);
        alert("errorThrown: ",errorThrown);
    }
});

我有一个 asp.net 网络服务,它返回响应为...

<?xml version="1.0" encoding="utf-8"?>
<string>{"UserID":"180339206","LogInName":"Amol Chakane","IsValid":"True","UserRoleID":"1","IsPending":"0","IsOrganization":"False"}</string>

来自 jomsocial 网络服务的响应是...

["UserID : 475", "LogInName : kruti patil", "IsValid : True", "UserRoleID : 1", "IsPending : 0", "IsOrganization : False"]

我搜索了这个问题,但找不到解决方案。 请帮帮我。

编辑#1

试图以其他格式获得响应。

{
"UserID": "475",
"LogInName": "kruti patil",
"IsValid": "Yes",
"UserRoleID": "1",
"IsPending": "NO",
"IsOrganization": "No",

}

还是不行:(

谢谢

【问题讨论】:

  • 错误部分的变量的vvalues显示什么?
  • 您的 API 通过该调用返回什么(检查您的控制台,在 Chrome 中,网络标签会告诉您这一点),返回的错误是什么?
  • 错误部分返回的所有值都是空白的。这就是我无法追踪错误的原因。 :(
  • 你能调试你的php脚本吗?如果你打印出返回值,你就可以做到这一点。
  • @reporter:当我在 Google chrome 中使用 REST 控制台时,我得到了想要的响应。我不明白为什么 jQuery ajax 会发生这种情况??

标签: php web-services jquery


【解决方案1】:

当您发布更多信息时,我认为我找到了您遇到麻烦的原因。 根据this page,您的 json 对象的语法是错误的。链接页面显示了 Javascript 中最常见数据类型的示例。如果您阅读示例,请注意引号的位置。

【讨论】:

  • 我将回复更改为... { "UserID": "475", "LogInName": "kruti patil", "IsValid": "Yes", "UserRoleID": "1", "IsPending": "NO", "IsOrganization": "No", } 仍然面临同样的问题。
  • 如果不使用参数'url'中的主机名和端口号会怎样?
  • 然后我们到了必须提供完整的html和php源代码的地步。
【解决方案2】:

经过大量搜索,我终于找到了解决此问题的方法。 :)

localhost需要使用10.0.2.2这个网络地址 因为 android 模拟器无法识别 localhost 参考this

现在至少调用了成功回调

ajax 调用是..

$.ajax({
    type: "POST",
    url: "http://10.0.2.2:5454/kisan-06/index.php?option=com_api&format=raw&app=users&resource=login&key=dfd8a84f8cdce807ae1d30a838415ea37eaa075c",
    data: {username: 'sai.kiks2@gmail.com', password: '123456'},
    success: function(data, textStatus, jqXHR) {
        alert("in success");
    },
        error: function(jqXHR, textStatus, errorThrown){
            alert("There was an error loggin in");
        }
});

但现在我面临另一个问题......

如何访问成功回调返回的数据?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 2016-10-01
    • 2015-10-20
    • 2017-11-14
    相关资源
    最近更新 更多