簡體   English   中英

PHP服務器/ JavaScript客戶端ajax

[英]php server/ javascript client ajax

我正在使用html5和php服務器開發javascript的網絡應用程序,我的問題是在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)

我究竟做錯了什么? 我已經嘗試了很多在互聯網上看到的方式來做到這一點,但是我無法使其正常工作,有人可以幫助我嗎?

我已經對其進行了測試,並且一切正常。

您只需要刪除$.parseJSON(data); 從您的JavaScript。 然后它將起作用,因為如果將數據類型設置為JSON,則jQuery會自動為您執行此操作。

編輯:

如果PHP腳本位於其他域中,則可以將以下PHP標頭添加到腳本中:

<?php
    header('Access-Control-Allow-Origin: *');  
?>

試試這個,而不是您的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;
}

無需使用普通的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);

        }
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM