0

私はhtml5、phpサーバーを使用したjavascriptを使用してWebアプリを開発しています。私の問題は、javascriptでのajax呼び出しにあります。

$.ajax({ 
      type: "POST",
      url: "http://localhost/pos.php",
      data: "lat="+lat+"&lon="+lon+"&nome=helena",
      dataType: "JSON",
      success: function(data){ 

      data = $.parseJSON(data);
        console.log(data + " im here!!");
      },

      error: function(jqXHR, textStatus, errorThrown ){
         console.log("POST: ", jqXHR, textStatus, errorThrown);
      }
    });

そして、php の側からスクリプトを実行し、最後に次のようにします。

$arr = array ( 'a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5 );
echo json_encode($arr);

PHPは配列を返しますが、javascriptの側からは、成功関数でアクセスできません。コンソールには次のように表示されます。

POST:  [url=""]Object { readyState=0,  status=0,  statusText="error"}[/url] error (an empty string)

私は何を間違っていますか?インターネットで見た多くの方法でそれをやろうとしましたが、うまくいきません。誰か助けてもらえますか?

4

3 に答える 3

1

私はそれをテストしましたが、すべてが正常に機能しています。

$.parseJSON(data);JavaScriptから削除するだけです。データ型をJSONに設定すると、jQueryが自動的にそれを行うため、それは機能します。

編集:

PHP スクリプトが別のドメインにある場合は、次の PHP ヘッダーをスクリプトに追加できます。

<?php
    header('Access-Control-Allow-Origin: *');  
?>
于 2013-06-26T14:47:37.670 に答える
0

ajax 呼び出しの代わりにこれを試してください。

var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
       var json = JSON.parse(xhr.responseText);
       //Do whatever you want...
    }
};

xhr.open("POST", "pos.php", true);
xhr.send("lat="+lat+"&lon="+lon+"&nome=helena");

function getXMLHttpRequest() {
    var xhr = null;

    if (window.XMLHttpRequest || window.ActiveXObject) {
        if (window.ActiveXObject) {
            try {
                xhr = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
        } else {
            xhr = new XMLHttpRequest(); 
        }
    } else {
        alert("XMLHTTPRequest object not supported...");
        return null;
    }

    return xhr;
}
于 2013-06-26T14:52:57.077 に答える
0

通常の ajax を使用する必要はありません。コードに問題が見つかりました。以下の修正されたコードを参照してください

PHPファイル

  <?php
  header('Access-Control-Allow-Origin: *');
  $arr = array ( 'a'=>'1','b'=>'2','c'=>'3','d'=>'4','e'=>'5');
  echo json_encode($arr);
  ?>

Javascript ファイル

 $.ajax({
 url : "http://localhost/pos.php",
 type : "POST",
 dataType : "JSON",
 data : {"lat":lat , "lon" : lon , "nome" : helena },
 error : function () { //statements }
 success : function(data)
        {
          alert(data.a);

        }
 });
于 2013-06-26T15:39:31.410 に答える