1

我现在已经积累和切碎了大约 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 函数(被调用):

<script type="text/javascript">
$(function () {
    $('#inp').keyup(function () {
        var postData = $('#inp').val();
        $.ajax({
            type: "POST",
            dataType: "json",
            data: postData,
            beforeSend: function (x) {
                if (x && x.overrideMimeType) {
                    x.overrideMimeType("application/json;charset=UTF-8");
                }
            },
            url: 'removedmyurlfromhere',
            success: function (data) {
                // 'data' is a JSON object which we can access directly.
                // Evaluate the data.success member and do something appropriate...
                if (data.success == true) {
                    alert('result');
                    $('.results').html(data.message);
                } else {
                    $('.results').html(data.message);
                }
            }
        });
    });
});
</script>

抱歉格式化,这一切都是成对的复制它。删除了我的网址。

我知道该功能正在触发,因为如果我删除了 alert('here'); 并将其放在它显示的 ajax 调用之上。

有人知道为什么没有调用成功功能吗?任何浏览器上的类结果都不会在 div 中显示。

谢谢!

4

5 回答 5

1

嘿我有同样的问题

首先,我使用了 $.getJSON blah blah .... 但由于某种原因没有工作...

但是正常的ajax调用有效..我的页面返回一个json输出..尝试删除“数据类型”

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

$.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);
          }
});
于 2013-10-15T20:12:51.567 回答
0

在这里记住相同的域起源,使用带有回调的 jsonp 对我一直很有帮助,这确实意味着将 a 添加$_GET['callback']到您的 php 脚本并将 json_encode 包装'('.json_encode($Array).')'为正确的格式。

http://api.jquery.com/jQuery.getJSON/

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

于 2013-10-15T20:06:03.243 回答
0

看起来像跨域请求。

通过更改来尝试:

dataType : "json"

dataType : "jsonp"
于 2014-06-01T08:01:24.903 回答
0

我知道已经很晚了。但它可以简单地处理为

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 ) {}
});
于 2015-06-11T13:04:54.183 回答
-1

在 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)'));
 }
 // ...

});
于 2013-10-15T19:05:15.100 回答