使用jQuery通过php连接到服务器端SQL数据库

zgc7009

我一直在尝试查看一个示例,以弄清楚如何使用JQuery,AJAX和PHP从客户端连接到服务器的SQL数据库,尽管它很旧,但看起来做得很好,很简单:Example Link。单个文件夹包含我所有的php文件以及jQuery的产品版本(javascript-1.10.2.min.js)。

问题3-已修正

JS控制台在以下位置显示[Object,“ parsererror”,SyntaxError]

var id = data.data[0];              //get id, data['data'][0] works here as well

在client.php中。对象responseText显示...“未选择数据库” ...我已经基于Daedalus的响应更新了client.php,并且仍然遇到相同的错误。

错误是在server-api.php中错误标记了变量($ link而不是$ con)

- 代码 -

db-connect.php:

<?php 

//--------------------------------------------------------------------------
// Example php script for fetching data from mysql database
//--------------------------------------------------------------------------
$host = "localhost";
$user = "root";
$pass = "password";

$databaseName = "server-db";
$tableName = "inventory";

?>

server-api.php:

<?php 

//--------------------------------------------------------------------------
// 1) Connect to mysql database
//--------------------------------------------------------------------------
include 'db-connect-99k.php';
$con = mysql_connect($host,$user,$pass);
$db_selected = mysql_select_db('zgc7009_99k_db', $con);
$array = array('mysql' => array('errno' => mysql_errno($con), 'errtxt' =>mysql_error($con)));

//--------------------------------------------------------------------------
// 2) Query database for data
//--------------------------------------------------------------------------
$result = mysql_query("SELECT * FROM $tableName");          //query
$array['mysql'][] = array('errno' => mysql_errno($con), 'errtxt' =>mysql_error($con));
$array['data'] = mysql_fetch_row($result);                    //fetch result

//--------------------------------------------------------------------------
// 3) echo result as json 
//--------------------------------------------------------------------------
echo json_encode($array);

?>

client.php

<html>
<head>
  <script language="javascript" type="text/javascript" src="jquery-1.10.2.min.js"></script>
</head>
<body>

<!-------------------------------------------------------------------------
1) Create some html content that can be accessed by jquery
-------------------------------------------------------------------------->
<h2> Client example </h2>
<h3>Output: </h3>
<div id="output">this element will be accessed by jquery and this text replaced</div>

<script id="source" language="javascript" type="text/javascript">

$(function () 
{

  //-----------------------------------------------------------------------
  // 2) Send a http request with AJAX http://api.jquery.com/jQuery.ajax/
  //-----------------------------------------------------------------------
  $.ajax({                                      
    url: 'server-api.php',           //the script to call to get data          
    data: "",                        //you can insert url argumnets here to pass to api.php
                                   //for example "id=5&parent=6"
    //dataType: 'json',                //data format  (comment out or get parsererror) 

    // Successful network connection
    // Successful network connection
    success: function(data)          //on recieve of reply
    {
      var id = data.data[0];              //get id, data['data'][0] works here as well
      var vname = data.data[1];           //get name
      //--------------------------------------------------------------------
      // 3) Update html content
      //--------------------------------------------------------------------
      $('#output').html("<b>id: </b>"+id+"<b> name: </b>"+vname); //Set output element html
      $('#error_code').html("Success!");
    },
  error: function() {
    console.log(arguments);
  }
  });
}); 

</script>
</body>
</html>

问题1-已修复

多亏了用户的帮助,我终于摆脱了原来的错误:

OPTIONS file:///C:/Users/zgc7009/Desktop/Code/Web/php/server-api.php No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. jquery.js:8706
XMLHttpRequest cannot load file:///C:/Users/zgc7009/Desktop/Code/Web/php/server-api.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

问题2-已修复[现在正在临时Web服务器上运行(请参阅底部的链接)]

现在,我正在将WAMP(包括phpmyadmin和apache)作为我的Web服务器。我可以使用脚本(client.php)来运行我的php页面,它可以运行,似乎无法在我的日志中找到任何错误。但是,我似乎仍然从未遇到过脚本的成功功能。我假设我在某处(例如localhost /“我的网站” .php)进行了不适当的设置,但是我不确定在哪里。

我还尝试过一些更改我的AJAX函数,以包括.done:

$.ajax({      
  url: 'localhost/server-api.php',           //the script to call to get data          
  data: "",                        //you can insert url argumnets here to pass to api.php
                                   //for example "id=5&parent=6"
  dataType: 'json',                //data format   

  // Successful network connection
  success: function(data)          //on recieve of reply
  {
    var id = data[0];              //get id
    var vname = data[1];           //get name
    //--------------------------------------------------------------------
    // 3) Update html content
    //--------------------------------------------------------------------
    $('#output').html("<b>id: </b>"+id+"<b> name: </b>"+vname); //Set output element html
  }

}).done(function() {
    $('#output').html("AJAX complete");
});

但是我的输出值在ajax调用中从未改变。我可能错误地实现了.done,但是我似乎无法弄清为什么我什么都没击中,并且似乎找不到可以帮助下一步的日志。

在以前的编辑中,我从php调用中删除了localhost(“ localhost / server-api.php”返回了404),现在又被卡住了。我从jQuery调用中收到304 Not Modified,但我认为,从jQuery 1.5开始,ajax成功地实现了这一点,因此我仍然应该实现html文本更新(正确吗?),但我没有。

WAMP访问日志:

127.0.0.1 - - [14/Jan/2014:14:22:45 -0500] "GET /client.php HTTP/1.1" 200 2146
127.0.0.1 - - [14/Jan/2014:14:22:45 -0500] "GET /jquery.js HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2014:14:22:45 -0500] "GET /server-api.php HTTP/1.1" 200 38

注意-这是我在浏览器中刷新client.php时唯一更新的日志。我的js控制台保持空白。我已将其上传到临时站点:zgc7009.99k.org/client-99k.php

代达罗斯

如果提出以下内容,请原谅我,但我想尽我所能解释。

首先,如注释中所述error.ajax()仅当在尝试加载必要的php页面时(或您未加载的php页面时出错),才会调用jQuery方法的方法(如果未指定url,则使用当前页面))已指定。在这方面的错误可能是404(找不到页面),500(服务器错误)或您拥有的东西。

您遇到的当前错误有两个方面:

  1. 您没有在计算机上运行服务器(或者您正在通过浏览器中的正确URL访问该页面(现在应该是, localhost/path/to/file.extension)
  2. 相同来源策略阻止您的页面被加载

关于问题#1,需要由您的PHP解释器处理一个php页面,您需要在系统上安装该php解释器。我建议使用xampp之类的东西来适应这种情况,尽管还有很多其他选择。

当访问该计算机上运行的服务器,一个使用localhost在地址栏中的URL,没有协议(http://https://ftp://等),也从不file:///协议。例如,如果我要访问文件夹测试的index.php文件,它将为localhost/test/index.php

关于问题#2,浏览器具有各种限制,以防止执行恶意代码。这些限制之一是Same Origin policy,该策略限制来源与原始请求不同的文档接受该请求。例如..

如果我们在处有一个服务器domain.website.com,并且向发出请求otherdomain.website.com,则该请求将失败,因为请求的端点位于另一个域上。

同样,相同的存在对于制造方面的任何请求file:///的协议。它始终是1的产地不同对待,它总是会1失败。可以更改此行为,但不建议这样做,因为它是一个安全漏洞。

我还建议您查看MDN关于SOP的文章

当然,要解决所有这些问题..在您的机器上安装Web服务器(例如xampp或wamp)(取决于您的操作系统)或使用托管的Web服务器,请不要通过双击打开html文件,而只能通过访问其url来打开它。 (根据您的网络服务器的目录(每个服务器的目录不同)),并始终确保您的域和端口匹配。

  • 1:在某些情况下(例如此处)除外

编辑1:

不知道为什么我以前没有看到这个;我们本可以避免头痛的。.无论如何,首先,更改错误并在此处执行以下操作:

$dbs = mysql_select_db($databaseName, $con);
echo mysql_errno($con) . ": " . mysql_error($con). "\n";

到:

$array = array('mysql' => array('errno' => mysql_errno($con), 'errtxt' =>mysql_error($con)));

然后,将数据库处理后的数组集更改为此:

$result = mysql_query("SELECT * FROM $tableName");          //query
$array['mysql'][] = array('errno' => mysql_errno($con), 'errtxt' =>mysql_error($con));
$array['data'] = mysql_fetch_row($result);

解释我已更改的内容以及原因。.您的第一个回显是在解析回显的json时导致json解析器失败。如果您在刷新过程中未打开控制台,则不会看到它确实执行了ajax请求。您也没有定义错误处理程序,因此您永远不会知道。为了解析我上面刚刚创建的新json,请将上面的成功处理程序的变量声明修改为:

var id = data.data[0];              //get id, data['data'][0] works here as well
var vname = data.data[1];           //get name

当然,如果您的mysql引起任何错误,则可以使用以下命令访问这些错误:

console.log(data.mysql);

同样,在您的成功职能中。要查看您的实际.ajax()方法是否有错误,可以为错误处理程序执行以下操作:

error: function() {
    console.log(arguments);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Windows Phone 8连接到服务器上已经托管的SQL Server数据库

来自分类Dev

使用闪亮服务器上的ROracle连接到Oracle数据库

来自分类Dev

无法连接到SQL数据库服务器

来自分类Dev

jQuery ajax post不将数据发送到服务器端(使用PHP)

来自分类Dev

客户端与服务器端数据库事务

来自分类Dev

我似乎无法将PHP页面连接到SQL测试服务器和数据库

来自分类Dev

PHP连接到差异服务器上的两个数据库并使用insert select

来自分类Dev

如何通过TextMode =“ Time”将服务器端代码中的值设置为asp.net TextBox?时间值来自SQl Server数据库

来自分类Dev

SQL Server 2014-无法连接到本地数据库-找不到服务器

来自分类Dev

如何使用php将opencart应用程序连接到ms sql服务器数据库?

来自分类Dev

如何使用API将Flutter应用程序连接到本地sql服务器数据库?

来自分类Dev

无法在docker-compose(php和MariaDB)中连接到数据库服务器

来自分类Dev

PHP表单验证服务器端,用于更新数据库中的现有行

来自分类Dev

本地服务器无法使用PHP连接到远程Postgresql数据库,但是本地终端可以连接

来自分类Dev

如何从Azure SQL服务器/数据库连接到远程MySQL

来自分类Dev

如何使用Windows Phone 8连接到已经托管在服务器上的SQL Server数据库

来自分类Dev

jQuery数据表服务器端处理按数据库ID选择行

来自分类Dev

连接到远程mysql数据库服务器

来自分类Dev

在PHP中连接到不同服务器上的多个数据库

来自分类Dev

如何在XAMPP服务器上使用php将MySQL数据库连接到html页面?

来自分类Dev

使用JSP在tomcat服务器中连接到Oracle数据库时出错

来自分类Dev

jQuery ajax post不将数据发送到服务器端(使用PHP)

来自分类Dev

不使用数据库时,是否需要在服务器端绑定数据列表标签

来自分类Dev

如何将本地数据库服务器连接到SQL Azure数据库服务器

来自分类Dev

如何通过Macbook上的终端连接到服务器上的MYSQL数据库?

来自分类Dev

Python:如何连接到服务器数据库?

来自分类Dev

无法在端口 1433 上连接到 SQL Server 数据库服务器

来自分类Dev

使用 Wamp 将 SQL 服务器数据库连接到 PHP Web 应用程序

来自分类Dev

使用 Jupyter Notebook 通过指定的螺栓连接连接到服务器图形数据库

Related 相关文章

  1. 1

    如何使用Windows Phone 8连接到服务器上已经托管的SQL Server数据库

  2. 2

    使用闪亮服务器上的ROracle连接到Oracle数据库

  3. 3

    无法连接到SQL数据库服务器

  4. 4

    jQuery ajax post不将数据发送到服务器端(使用PHP)

  5. 5

    客户端与服务器端数据库事务

  6. 6

    我似乎无法将PHP页面连接到SQL测试服务器和数据库

  7. 7

    PHP连接到差异服务器上的两个数据库并使用insert select

  8. 8

    如何通过TextMode =“ Time”将服务器端代码中的值设置为asp.net TextBox?时间值来自SQl Server数据库

  9. 9

    SQL Server 2014-无法连接到本地数据库-找不到服务器

  10. 10

    如何使用php将opencart应用程序连接到ms sql服务器数据库?

  11. 11

    如何使用API将Flutter应用程序连接到本地sql服务器数据库?

  12. 12

    无法在docker-compose(php和MariaDB)中连接到数据库服务器

  13. 13

    PHP表单验证服务器端,用于更新数据库中的现有行

  14. 14

    本地服务器无法使用PHP连接到远程Postgresql数据库,但是本地终端可以连接

  15. 15

    如何从Azure SQL服务器/数据库连接到远程MySQL

  16. 16

    如何使用Windows Phone 8连接到已经托管在服务器上的SQL Server数据库

  17. 17

    jQuery数据表服务器端处理按数据库ID选择行

  18. 18

    连接到远程mysql数据库服务器

  19. 19

    在PHP中连接到不同服务器上的多个数据库

  20. 20

    如何在XAMPP服务器上使用php将MySQL数据库连接到html页面?

  21. 21

    使用JSP在tomcat服务器中连接到Oracle数据库时出错

  22. 22

    jQuery ajax post不将数据发送到服务器端(使用PHP)

  23. 23

    不使用数据库时,是否需要在服务器端绑定数据列表标签

  24. 24

    如何将本地数据库服务器连接到SQL Azure数据库服务器

  25. 25

    如何通过Macbook上的终端连接到服务器上的MYSQL数据库?

  26. 26

    Python:如何连接到服务器数据库?

  27. 27

    无法在端口 1433 上连接到 SQL Server 数据库服务器

  28. 28

    使用 Wamp 将 SQL 服务器数据库连接到 PHP Web 应用程序

  29. 29

    使用 Jupyter Notebook 通过指定的螺栓连接连接到服务器图形数据库

热门标签

归档