【问题标题】:JQuery Ajax Not Sending Data to Php File or Running Success FunctionJQuery Ajax 不向 PHP 文件发送数据或运行成功函数
【发布时间】:2012-10-26 18:31:40
【问题描述】:

我遇到了 jQuery Ajax 函数没有将数据发送到相应的 php 文件,然后没有运行成功函数的问题。这是我的js:

function meetMember(empl_id) {

var member = {id: empl_id}

$.ajax({
    type: 'POST',
    url: 'php/infocheck.php', 
    data: member, 
    dataType: 'json',
    success: function(data) {
        alert('hi');
        console.log(data);
        $('#member-info').append(data); 
    }   
});
}

还有 infocheck.php 代码:

<?php

ini_set('display_errors',1);
error_reporting(E_ALL);

include('db-info.php');

$id = $_POST['id'];

    $q = "SELECT * FROM team WHERE empl_id = $id LIMIT 1";
    $member = mysql_fetch_assoc(mysql_query($q));
    $met = $member['ifmet'];

    if($met != 1) {
        mysql_query("UPDATE team SET ifmet = 1 WHERE empl_id = $id");
    }

    echo "<img src=\"game/images/{$member['image']}\" alt='' style='padding:2px 10px 0px 0px; float:left;' />";
    echo "<h3>{$member['name']}</h3>";
    echo "<h4><em>{$member['title']}</em><h4>";
    echo "<p>{$member['description']}</p>";

?>

当我在浏览器中查看 php 文件时,我得到了错误:

“注意:未定义的索引:第 8 行 /Applications/MAMP/htdocs/Development/ETL24/php/infocheck.php 中的 id

警告:mysql_fetch_assoc() 期望参数 1 是资源,布尔值在 /Applications/MAMP/htdocs/Development/ETL24/php/infocheck.php 第 12 行给出

success函数中的console.log和alert不运行。当我查看 php 文件时,我什至没有在控制台中得到回声。请让我知道您可能有的任何想法或问题。谢谢。

【问题讨论】:

  • 你检查过你的 php 文件中的 id 吗?它是一个有效的数字吗?
  • 您的php文件中似乎发生了异常,阻止了ajax调用返回结果,导致没有调用成功函数。

标签: php jquery ajax


【解决方案1】:

使用dataType: 'html'你的文件返回HTML

当您在浏览器上打开文件时(GET) 是的,您会收到 错误,因为它需要通过 POST 传递 id

如果您想调试它,请更改为 type: GET 并在 url 上附加 ?id=1

【讨论】:

  • var member = {id: empl_id}需要以;结束行
【解决方案2】:

换行

var member = {id: empl_id}

var member = "id="+empl_id;

  var member = {"id": empl_id}

【讨论】:

  • 让我知道它是否有效。我真的不明白投反对票的原因。
  • +1 很抱歉在我发帖之前没有看到您的刊物
  • :-) 谢谢!!欣赏!!
【解决方案3】:

首先mysql的功能已经不维护了,考虑换成mysqli的功能。

这段代码:

var member = {id: empl_id}

应该写

var member = {"id": empl_id}; // notice the semi-colon too

由于您没有传递“id”参数,因此您的 $id 变量为空,因为 $_POST['id'] 实际上是空的。这解释了这个警告:

Notice: Undefined index: id in /Applications/MAMP/htdocs/Development/ETL24/php/infocheck.php on line 8

您实际上是在将 $id 设置为 null。

这样,你的查询变成了类似

SELECT * FROM team WHERE empl_id = LIMIT 1

然后使您的 mysql_query 返回 false 而不是资源,这就是此错误的含义:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /Applications/MAMP/htdocs/Development/ETL24/php/infocheck.php on line 12"

简而言之,只需将您的变量更改为 JSON 并开始使用 mysqli 函数

【讨论】:

  • 对不起@AbhishekSaha Saha,我在你在第三行进行编辑之前就开始写了
  • 无意冒犯..我接受这一点,您的回答更具描述性。
  • {"id": empl_id}{id: empl_id} 没有区别,无论如何都可以使用
  • id 周围没有 "" 会使 id 成为变量。
  • @AbhishekSaha nop ,试试它是一个对象属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 2014-04-01
  • 1970-01-01
  • 2016-03-09
  • 2014-01-11
相关资源
最近更新 更多