Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对PHP WebService的JQuery JSON调用始终运行;“错误”;回拨_Javascript_Php_Jquery_Json_Web Services - Fatal编程技术网

Javascript 对PHP WebService的JQuery JSON调用始终运行;“错误”;回拨

Javascript 对PHP WebService的JQuery JSON调用始终运行;“错误”;回拨,javascript,php,jquery,json,web-services,Javascript,Php,Jquery,Json,Web Services,我现在头痛,因为我一整天都有这个问题,但仍然无法解决。我在Google和StackOverflow上看了几个小时,尝试了很多方法(包括从JSON改为JSONP,在PHP上检查头,本地主机测试),问朋友们,等等,但我还是被卡住了。也许这只是一个细节,我不知道 我正在开发一个Android移动应用程序,为此,我在一个主机(比方说example.com)上安装了一个PHP Web服务,自我使用PHP WS JSON客户端测试以来,该服务运行正常。问题是我现在使用jQuery、JSON和Ajax从我计算

我现在头痛,因为我一整天都有这个问题,但仍然无法解决。我在Google和StackOverflow上看了几个小时,尝试了很多方法(包括从JSON改为JSONP,在PHP上检查头,本地主机测试),问朋友们,等等,但我还是被卡住了。也许这只是一个细节,我不知道

我正在开发一个Android移动应用程序,为此,我在一个主机(比方说example.com)上安装了一个PHP Web服务,自我使用PHP WS JSON客户端测试以来,该服务运行正常。问题是我现在使用jQuery、JSON和Ajax从我计算机上的JS文件调用这个WS,我从Google Chrome的调试器控制台得到以下响应:

  • 重新启用日期:4
  • 状态文本:“确定”
  • responseText:(我需要的,没有错误)
但是在服务器的响应中,我总是收到错误回调,而不是成功。我读到这篇文章是因为服务器无法正确解析JSON,但我真的不知道

我把密码留给你

从CLIENT.JS:

$.ajax({
    type: "POST",
    crossDomain: true,
    contentType: "application/json utf-8",
    dataType: "json",
    url: "http://www.example.com/ws/webservice.php/" + methodName,
    data: JSON.stringify(window.parameterArray),

    success: function (response)
        {
            alert('Success!');
            window.resultVar = "Success! " + response;
            console.log(response);
        },
    error: function (response)
        {
            alert('Error');
            window.resultVar = "Error: " + response;
            console.log(response);
        }
});
从SERVER.PHP:

<?php
header('Access-Control-Allow-Origin: *');  //I have also tried the * wildcard and get the same response
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');
header('Content-type: application/json; charset=utf-8');

require_once "mobilefuncts.php";

$methodName = str_replace($_SERVER["SCRIPT_NAME"]."/", "", $_SERVER["REQUEST_URI"]);

if (isset($methodName))
{
   $param = (array)json_decode($HTTP_RAW_POST_DATA);

   $access = new MobileAccess();  //From mobilefuncts.php
   $result = call_user_func_array(array($access,$methodName), $param);   //Calls the method

   echo json_encode($result);
}
?>
这可能是问题的原因吗

更新2:

听着,我有个线索。我在error函数中添加了更多参数,得到了以下结果:

(错误的变化是从函数(响应)到函数(jqXHR、textStatus、errorhorn))

改变

contentType: "application/json utf-8",


contentType
头的畸形导致服务器错误地解释了
POST
请求的内容。

尝试将JQuery URL更改为:

http://www.example.com/ws/webservice.php/methodName
致:


然后尝试从PHP的$_GET['method']中读取它,我认为这应该是您的问题

只需将响应更改为文本,然后将文本解析为JSON,例如:


var json=json.parse(数据)

因为您正在进行跨域调用,所以需要使用JSONP。PHP服务器必须形成如下响应:回调(jsonSyntax)

contentType:“application/json utf-8”
缺少一个分号?什么是“response”呢?“response”说的是,除其他外,我在主要帖子上的内容:readyState:4 status:200 statusText:“OK”responseText:(我需要的,没有错误)对不起,Brad m,但这个解决方案不起作用。事实上,为了解决这个问题,我改变了指令,因为几天前我就这样做了。无论如何谢谢你!你给了我片刻的希望:)不,同样的结果。问题是WS正在正确地获取方法,但是回调遇到了问题。responseText正在工作,因为它得到了我想要的东西,但它是在“错误”回调中出现的,而不是“成功”。谢谢你,Elhussein Hashem,我不明白这种方法。我唯一能想到的是在响应中使用JSON.parse(事实上,我必须在某处使用),但问题是应该在成功或错误回调中调用解析,不是吗?因此它不会起作用,因为无论我在成功回调上做什么都不会发生。我说对了吗?我没有跟着。。。用婴儿的步子做这个。。。如果你不能让你的服务器返回JSON,那么我只需要继续,以文本的形式获取结果,然后解析为JSON,一个错误就是一个错误将是文本。。。我遇到了类似的问题,我的ashx处理程序没有以JSON的形式返回,所以我将其作为字符串接收并对其进行解析。得到404错误意味着找不到某些资源。。。。您正在加载的是cordova.json吗???还是您通过AJAX调用的URL?确实是,在移动应用程序的主文件上。它一定是文件的一部分:谢谢,T McKeown!事实上,这就是问题的解决办法。只要我得到所需的15分,我就会给你适当的投票,呵呵。再次感谢你,我希望我学会了莱松。
contentType: "application/json utf-8",
contentType: "application/json; charset=utf-8",
http://www.example.com/ws/webservice.php/methodName
http://www.example.com/ws/webservice.php?method=methodName