Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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 使用JQuery从PHP获取JSON响应_Javascript_Php_Jquery_Json_Cordova - Fatal编程技术网

Javascript 使用JQuery从PHP获取JSON响应

Javascript 使用JQuery从PHP获取JSON响应,javascript,php,jquery,json,cordova,Javascript,Php,Jquery,Json,Cordova,现在,我已经积累并切碎了大约5到6本不同的教程,但我仍然无法找出问题所在 使用JQuery Mobile(phonegap)向PHP服务器发送和接收数据。我似乎无法让JQuery脚本获取响应。 服务器上的PHP: <?php // Set up associative array $data = array('success'=> true,'message'=>'Success message: worked!'); // JSON encode and send bac

现在,我已经积累并切碎了大约5到6本不同的教程,但我仍然无法找出问题所在

使用JQuery Mobile(phonegap)向PHP服务器发送和接收数据。我似乎无法让JQuery脚本获取响应。 服务器上的PHP:

<?php

// Set up associative array
$data = array('success'=> true,'message'=>'Success message: worked!');

// JSON encode and send back to the server
echo json_encode($data);

?>

JQuery函数(正在调用):


$(函数(){
$('#inp').keyup(函数(){
var postData=$('#inp').val();
$.ajax({
类型:“POST”,
数据类型:“json”,
数据:postData,
发送前:函数(x){
if(x&&x.overrideMimeType){
x、 overrideMimeType(“application/json;charset=UTF-8”);
}
},
url:“removedmyurlfromhere”,
成功:功能(数据){
//“data”是一个JSON对象,我们可以直接访问它。
//评估数据。成功成员并采取适当措施。。。
if(data.success==true){
警报(“结果”);
$('.results').html(data.message);
}否则{
$('.results').html(data.message);
}
}
});
});
});
很抱歉格式化了,这一切都变成了一对一对的复制。删除了我的url

我知道函数正在启动,因为如果我删除警报(“此处”);并将其置于显示的ajax调用之上

有人知道为什么success函数不调用吗?在任何浏览器上,都不会在div中显示类结果


谢谢

在PHP中,添加JSON内容类型标题:

header('Content-Type: application/json');
另外,试着听完整的对话,看看你是否得到了回复:

$.ajax({

 // ....
 complete: function (xhr, status) {
   $('.results').append('Complete fired with status: ' + status + '<br />');
   $('.results').append('XHR: ' + (xhr ? xhr.responseText : '(undefined)'));
 }
 // ...

});
$.ajax({
// ....
完成:功能(xhr,状态){
$('.results').append('Complete fired with status:'+status+'
'); $('.results').append('XHR:'+(XHR?XHR.responseText:'(未定义)); } // ... });
请记住相同的域起源,将jsonp与回调一起使用一直对我很有帮助,这意味着向php脚本中添加一个
$\u GET['callback']
,并用
'('.json\u encode($Array)。')包装json\u encode,以获得正确的格式


该页面上的最后一个演示是我找到的最好的例子。

嘿,我也遇到了同样的问题

首先,我使用了$.getJSON等等。。。。但是由于某种原因没有起作用

但是普通的ajax调用起了作用。。我的页面返回一个json输出。。尝试删除“数据类型”

我使用了从我粘贴的下面的站点复制的代码

$.ajax({
  type: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" }
})
  .done(function( msg ) {
    alert( "Data Saved: " + msg );
  });
下面是我如何使用和处理json输出的代码

$.ajax({
          type: "GET",
          url: "json.php",
          data: { searchword: q, projid:prid }
        })
          .done(function( jsonResult ) {
            var str='';
        for(var i=0; i<jsonResult.length;i++)
          {
              //do something here.. with jsonResult."yournameof "
            alert(jsonResult[i].id+jsonResult[i].boqitem);
          }
});
$.ajax({
键入:“获取”,
url:“json.php”,
数据:{searchword:q,projid:prid}
})
.done(函数(jsonResult){
var-str='';

for(var i=0;i看起来像跨域请求

通过更改以下内容来尝试:

dataType : "json"


我知道已经很晚了,但可以简单地像这样处理

var postData = {'inp': $('#inp').val()};
$.ajax({
    type: "POST",
    data: postData,
    url: 'removedmyurlfromhere', // your url
    success: function (response) {
        // use exception handling for non json response
        try {
            response = $.parseJSON(response);
            console.log(response); // or whatever you want do with that
        } catch(e) {}
    },
    error: function( jqXHR, textStatus, errorThrown ) {},
    complete: function(  jqXHR, textStatus ) {}
});

在进行ajax调用时,您在浏览器中得到了什么响应?您实际上得到了200个响应吗?这是一个跨域请求吗?它只是一个具有以下关联的数组:{“success”:true,“message”:“success message:hooray!”}添加tak3er建议的头文件我得到了一个.json文件。文件存储在本地,而php文件则存储在网页外部的服务器上。我怀疑这是一个跨域请求。我尝试过使用jsonp并添加回调参数。这不起作用either@WelshJohn那么你是说,在查看使用浏览器的开发工具(或Firebug或类似工具)调用AJAX,您将得到一个200响应,其中包含您期望的JSON正文?添加了上述标题,没有任何更改。没有警报,也没有div结果。现在直接访问页面将导致打开或保存.JSON文件。虽然添加标题是个好主意,但如果您在ajax选项中提供了数据类型,则不需要添加标题。该文件打开是因为您是浏览器不理解json mime类型。您是否看到我通过调用complete:编辑的响应以查看是否得到响应?complete函数在相应的div.ok cool中激发并生成complete Fired!。这意味着您的代码正在工作,但响应有问题。您有两个选项:获得一些不同的响应t from 200 OK或您的JSON无效。如果您有带firebug的Google chrome或Firefox,这将非常有用。打开devtools/firebug,转到网络选项卡,单击您发出的请求以查看响应。我还更新了js代码,包括打印状态和响应
dataType : "jsonp"
var postData = {'inp': $('#inp').val()};
$.ajax({
    type: "POST",
    data: postData,
    url: 'removedmyurlfromhere', // your url
    success: function (response) {
        // use exception handling for non json response
        try {
            response = $.parseJSON(response);
            console.log(response); // or whatever you want do with that
        } catch(e) {}
    },
    error: function( jqXHR, textStatus, errorThrown ) {},
    complete: function(  jqXHR, textStatus ) {}
});