2

我试图用 ajax 执行一个 php 函数,但该函数没有响应,如果我使用 chrome 查看网络结果,我会得到这个

编辑:我用 WAMP 运行这个本地

manageusers.php
/geopedia/core
POST
200
OK
text/html
jquery-1.10.1.min.js:6
Script
850 B
625 B
7 ms
4 ms

那不应该工作吗?

阿贾克斯函数

    $(document).ready(function() {
    $('#facebook').click(function() { 
        var first_name = $('#first_name').val();
        var last_name = $('#last_name').val();
        var username = $('#username').val();

        $.ajax({ 
            url: 'core/manageusers.php',
            type: 'POST',
            data: {
                facebook:first_name,
                last_name:last_name,
                username:username

            },
        });
    });
}); 

事件处理程序

if(isset($_POST['facebook'])){ 
echo("inside");
include_once('core/class.users.php');
$users = new Users();

$first_name = $_POST['first_name'];
$last_name  = $_POST['last_name'];
$username   = $_POST['username'];

$fb_user = $users->fb_user($first_name,$last_name,$username);
}
4

4 回答 4

2

这可能会帮助您找到错误:

        $.ajax({ 
            url: 'core/manageusers.php',
            type: 'POST',
            data: {
                facebook:first_name,
                last_name:last_name,
                username:username,

            },
            success: function(mydata) {
                alert(mydata);
            }
        });
    });
}); 

事件处理程序

<?php
//if(isset($_POST['facebook'])){ 
//echo("inside");
//include_once('core/class.users.php');
//$users = new Users();

$first_name = $_POST['first_name'];
$last_name  = $_POST['last_name'];
$username   = $_POST['username'];

echo 'You sent: First: [' .$first_name. ']<br>'Last: [' .'$last_name. '] etc.';

//$fb_user = $users->fb_user($first_name,$last_name,$username);
于 2013-06-14T23:19:40.263 回答
0

修改了以前删除的答案的转贴:

如果您在本地运行此脚本,请尝试在 POST 请求中将 dataType 参数设置为 text 或 json:$.ajax({ url: 'core/manageusers.php', type: 'POST', dataType: 'text', data :{.......

@Alfie 是的,我实际上在本地运行它。很好,你提到它。我尝试添加数据类型,包括 json 和文本,但没有运气。– 戴蒙德

我过去也做过类似的噩梦。它归结为网络安全功能:跨域策略文件。维基:http ://en.wikipedia.org/wiki/Same_origin_policy

我发现在 IE 中(但在我测试时不是 firefox),在 jQuery 请求期间将 dataType 设置为“text”(如上所述)是有效的。我还success:...按照其他人的建议使用了返回参数。否则,请尝试创建一个 crossdomain.xml 文件并将其放在您的根目录中。

一个“宽松”(允许一切)版本如下所示:

`<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
    <site-control permitted-cross-domain-policies="all" />
    <allow-access-from domain="*" to-ports="*" />
    <allow-http-request-headers-from domain="*" headers="*" />
</cross-domain-policy>`
于 2013-06-14T23:58:32.023 回答
0

为什么不使用“成功”参数?

.ajax({ 
        url: 'core/manageusers.php',
        type: 'POST',
        data: {
            facebook:first_name,
            last_name:last_name,
            username:username,

        },
        success: function (result) {
             //insert some code here
        },
    });
于 2013-06-14T23:17:19.080 回答
0
  1. 你的 PHP 没有给出任何响应;
  2. 即使这样做了,您的 Javascript 代码似乎也没有使用它;
  3. 在您的通话中data属性 的最后一部分之后有一个逗号。$.ajaxIE 不喜欢这样;
  4. 最后,除了所有请求,无论成功与否,您都没有给出任何类型的响应,"inside" 并且您没有做任何事情来处理 Javascript 代码中的响应。
于 2013-06-14T23:21:48.510 回答