0

数日前から AJAX を機能させようとしてきましたが、なぜ機能しないのかわかりません。何も警告せず、次のエラーが表示されますFailed to load resource: the server responded with a status of 404 (Not Found) - [object%20Object]。また、すべての NULL、JS、PHP を返し続けます。理由がわからない。

JS

var fullName = ["John Doe", "Jane Doe"];

$(window).load(function(){
    getList();
});

function getList(){
    $.getJSON({
       type: "GET", /* the request's method: */
       url:"/names.php",    /* the request's location: */
       data: JSON.stringify({names: fullName}), /* the request's fields: */
       contentType: "application/json; charset=utf-8",  /* the request's content-type : */
       dataType:"json", /* the response's content-type: */
       success: function(json){ /* the callback function */
         if(json.length > 0){
             $.each(json, function(i, v){
                console.info(v);
             });
          }
          else {
             alert('wtf?!');
          }
        }
    });
}

PHP

<?php
$req=array_merge($_GET, $_POST);

$names=json_decode($req['names'], true);
header('content-type: application/json; charset=utf8;');
echo json_encode($names);
4

3 に答える 3

4

$.ajaxの代わりに使用する必要がありgetJSONます。jQuery は、構成オブジェクト全体が URL であると考えています。

また、 に変更すると、自動的に行われるため、データを変更する.ajax必要はありません。JSON.stringifyしたがって、コードは次のようになります。

function getList(){
    $.ajax({
       type: "GET", /* the request's method: */
       url:"/names.php",    /* the request's location: */
       data: {names: fullName}, /* the request's fields: */
       contentType: "application/json; charset=utf-8",  /* the request's content-type : */
       dataType:"json", /* the response's content-type: */
       success: function(json){ /* the callback function */
         if(json.length > 0){
             $.each(json, function(i, v){
                console.info(v);
             });
         } else {
            alert('wtf?!');
         }
       }
    });
}

getJSON で使用する短いバージョンは次のようになります。

function getList(){
    $.getJSON("/names.php", {names: fullName}, function(json){ 
         if(json.length > 0){
             $.each(json, function(i, v){
                console.info(v);
             });
         } else {
             alert('wtf?!');
         }
    });
}

ただし、リクエストは JSON として送信されません (レスポンスのみが JSON であると想定されます)。そのため、PHP を少し変更する必要があります。

<?php
$names=$_GET['names'];
header('content-type: application/json; charset=utf8;');
echo json_encode($names);
于 2013-03-07T03:41:46.190 に答える
0

jQuery docsから、jQuery.getJSON は次の短縮形です。

$.ajax({
    dataType: "json",
    url: url,
    data: data,
    success: success
});

したがって、次のように使用する必要があります。

$.getJSON('/names.php', {names: fullName}, 
    function(data) {...}
);
于 2013-03-07T03:53:55.300 に答える
0

URL のパスが正しければ.getJSON、コードを に変更すると、残りの部分が機能するはずです。.ajax

API ドキュメント

于 2013-03-07T03:42:29.867 に答える