Ajax jquery post脚本无法正常工作

I am following this tutorial https://openenergymonitor.org/emon/node/107. What i am trying to do is, use jquery and php to get data from a mysql database. I exactly did what the tutorial said, but I am unable to make it work. I get the fail alert when I load the page.

This is what I did:

api.php:

$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");

$selected = mysql_select_db($db,$dbhandle)
or die("Could not select examples");

$result = mysql_query("SELECT * FROM todolist");
$array = mysql_fetch_row($result);

echo json_encode($array);

(I know that it is better to use PDO, but this is just for testing.)

The jquery script:

  <script language="javascript" type="text/javascript">
  $(function () {
            $.ajax({                                      
              url: 'api.php', data: "", dataType: 'json',  
              success: function(data) { 
                var id = data[0]; 
                var description = data[1]; 
                 $('#output').html("<b>id: </b>"+id+"<b> description: </b>"+description); 
              },
              error: function() {
                alert("Fail");
              }
            });
          }); 
  </script>

When I visit api.php this is what I get:

["161","true","werken
","12"]

when i use console.log(arguments) this shows up:

[Object, "parsererror", SyntaxError: Unexpected token < in JSON at position 0 at Object.parse (native) at parseJSON …]
0
:
Object
1
:
"parsererror"
2
:
SyntaxError: Unexpected token < in JSON at position 0 at Object.parse (native) at parseJSON (https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js:16:11709) at b$ (https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js:16:1382) at w (https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js:18:8326) at XMLHttpRequest.d (https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js:18:14247)
callee
:
(err)
length
:
3
Symbol(Symbol.iterator)
:
values()
__proto__
:
Object

I am trying to make this work for about 3 hours now, and it drives me pretty crazy. I hope someone can explain the problem with my script.

Edit:

I fixed it. There was a problem with a page i included in api.php.

dpnof28482
dpnof28482 您没有找到正确的位置来查看控制台错误,因为肯定会出现parseError。此外,错误表明您的响应包含<character(“Unexpectedtoken<”),这意味着响应不是您所期望的。查看网络选项卡,查看响应中返回的内容。
大约 4 年之前 回复
dongmacheng3222
dongmacheng3222 你可以console.log(数据);?
大约 4 年之前 回复
dongzhong9055
dongzhong9055 控制台中没有出现任何错误。但是,当我使用console.log(参数)显示某些内容时,我将其添加到问题中,因为它太长了。
大约 4 年之前 回复
douzhe3516
douzhe3516 顺便说一句,它看起来不像数据[1],它在数据[2]中。您应该选择所需的特定列,或使用mysql_fetch_assoc以便按名称访问列。
大约 4 年之前 回复
douxiexie3574
douxiexie3574 您在开发者控制台中看到了什么?此外,这是GET请求,而不是POST。
大约 4 年之前 回复
douweng5420
douweng5420 在浏览器中按F12查看网络请求并确保没有错误,看起来像您期望的那样,然后查看控制台以查看是否存在任何错误。您可以执行console.log(参数)来查看传递给错误函数的所有信息,以查看是否显示任何内容,而不是警报(“失败”)。
大约 4 年之前 回复

1个回答



这可能是因为url没有使用绝对路径。
你是否在本地机器上运行它? 2个脚本(html和php)是否位于同一目录中?</ p>

您应该尝试使用浏览器的Developer Tool来检查和跟踪网络ajax调用。 您可能会收到404错误。</ p>

您可以通过执行以下操作获得有关错误的更多信息:</ p>

  error:function( 错误){
console.log(错误);
}
</ code> </ pre>

错误的详细信息将显示在开发人员工具控制台上。 大多数情况下,打开开发人员工具是通过在PC上按Ctrl + Shift + I或使用浏览器菜单来完成的。</ p>
</ div>

展开原文

原文

It's probably because of the url not using absolute path. Are you running this on your local machine ? Are the 2 scripts (html and php) on the same directory ?

You should try to use the Developer Tool of your browser to check and track the network ajax call. You're probably getting a 404 error.

You could get more info on the error by doing this :

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

The details of the errors will appear on your developer tool console. Most of the time, opening the developer tools is done by pressing Ctrl+Shift+I on PC, or by using browser menu.

donljt2606
donljt2606 所以这意味着你的php脚本不会返回JSON对象。 显然它返回一个HTML页面,其中包含body标签中的JSON字符串。
大约 4 年之前 回复
dpxw17759
dpxw17759 这是在一个网站上,脚本在同一目录中。 我收到0错误。 当我使用console.log(错误)时,它显示出来:对象{readyState:4,responseText:“<!DOCTYPE html>âμ<head>âμ<meta property =”og:image“c“ †μ</ script>†μ[“161”,“true”,“werken ”,“12”]âμμμμμμμμ,状态:200,statusText:“OK”}
大约 4 年之前 回复
立即提问
相关内容推荐