获取 json 没有“访问控制允许源”错误 - 电话间隙


get json No 'Access-Control-Allow-Origin' error - phone gap

尝试在我的Phonegap应用程序中检索和显示信息时,我不断收到此错误。

这是我得到的错误:

GET http://192.168.0.4:3000/Application/www/retrieveSymbol.php send @ jquery-2.2.0.js:

9172jQuery.extend.ajax @ jquery-2.2.0.js:8653jQuery.(匿名函数) @ jquery-2.2.0.js:8804jQuery.extend.getJSON @ jquery-2.2.0.js:8785(匿名函数) @ 书签.html:44书签.html:1 XMLHttpRequest 无法加载 http://192.168.0.4:3000/Application/www/retrieveSymbol.php。请求的资源上不存在"访问控制允许源"标头。因此,不允许访问源"空"。响应具有 HTTP 状态代码 404。

这是代码:

<script>
//populates product container
$(" #productContainer").html('');
$.getJSON("http://192.168.0.4:3000/Application/www/retrieveSymbol.php", function(data){  //retrieves json array
  $.each(data, function(i, field){          //loops through array
    $("#productContainer").append(          //creates product box filling it with data
      "<div id='productBox'>" + "<div id='name'>" + field[1] + " </div>" + "<br>" +
      "<div id='image'>" + "<img id='image' src='Images/" + field[5] + "'/>" + "</div>" +
      "<div id='description'>" + "<b>Description:</b> "  + "<br>" + field[2]  + " </div>" + "" +
      "<div id='price'>" + "£" + field[3] + " </div>" + "<br><br>" +  "<br>" +
      //gets name and price and sends data to basket when button is clicked
      "<form action='Basket.php' method='post' id='add'>" +
      "<input type='hidden' name='itemName' value=" + field[1] + "/>" +
      "<input type='hidden' name='itemPrice' value=" + field[3] + ">" +
      "<input id='addButton'type='submit' value='Add to Cart'>" +
      "</form>" + "</div>"
    );
  });
});
</script>

接收符号.php

<?php
//connect to the database
$mysqli = NEW MySQLi ('localhost','root','','contentdatabase');
//query database
$resultSet = $mysqli->query("SELECT * FROM items");
//count the rows
if($resultSet->num_rows != 0) {
  //turn the results into an array
  $rows = $resultSet->fetch_all();
  echo json_encode($rows);
}else{
  echo "{no connection}";
}
?>

谁能指出为什么会这样?

这是典型的跨源错误,可以在大多数PhoneGap项目中看到。请查看此答案以获取更多详细信息和解决方案。

PhoneGap/Cordova以及最新版本的Google Chrome中没有"访问控制允许来源"

使用此chrome扩展名Allow-Control-Allow-Origin,它允许您从任何来源请求任何带有ajax的网站