来自Zend帧字的Ajax响应

时间:2017-05-30 18:46:17

标签: php jquery ajax zend-framework

最近,我一直在尝试使用jquery / php / xml-rpc创建一个在线CRM,我有一个问题,我似乎无法找到解决方案。< / p>

我目前有一个ajax请求向php文档发送一个元素id,当它自己打开时(作为文档的直接url)从API服务器返回一个响应(布尔或某些错误,如&#39) ;错误的数据&#39;)。

然而,这根本不会出现在我的页面上,我不确定我发送的数据是否已经通过php文档。

这是我的jquery代码:

$('#SomeElement').on('click', function(){
    var id = $('#ELEMENTID').attr('value');

    $.ajax ({
        type:'POST',
        url: 'PHPfile.php',
        dataType: 'json',
        data: {id:id},
        success: function(data) {
            if(data.indexOf('YES') === -1){
                $('.alert-success').show();
                $('.alert-success').html(data);

                /*setTimeout(function() {
                    $('.alert-success').fadeOut('slow');
                    location.reload();
                }, 2000);*/
            } else {
                $('.alert-danger').show();
                $('.alert-danger').html(data);

                /*setTimeout(function() {
                    $('.alert-danger').fadeOut('slow');
                    location.reload();
                }, 2000);*/
            }
        }
    });
});

这是我的PHP代码:

require 'init_autoloader.php';

Zend\Mvc\Application::init(require 'config/application.config.php')->run();

$q = mysqli_query($conn, "SELECT * FROM some db WHERE somekey = '$_POST[id]'");

$main = mysqli_fetch_assoc($q);

if($main['someentry'] !== '0') {

    echo 'This is FALSE';

} else {

    $r = mysqli_query($conn, "SELECT * FROM side_db WHERE side_id = '$_POST[id]'");
    $p = mysqli_query($conn, "SELECT * FROM ext_db WHERE ext_id = '$_POST[id]'");
    $m = mysqli_query($conn, "SELECT * FROM img_db WHERE img_id = '$_POST[id]'");


    $side = mysqli_fetch_assoc($r);
    $ext = mysqli_fetch_assoc($p);

    if((int)$ext['gt'] === '0' || (int)$ext['gt'] === '1') {
        $g = 'yes';
    } else {
        $g = 'no';
    }

    foreach($ext as $key => $value) {
        if($key === 'somestring') {
            continue;
        }else if($value === '0' || $value === '1') {
            $ext[$key] = 'no';
        } else if($value === '2'){
            $ext[$key] = 'yes';
        }
    }

    foreach($main as $k => $v) {
        if($v === '0' || $v === '1') {
            $main[$k] = 'no';
        } else if($v === '2'){
            $main[$k] = 'yes';
        }
    }

    require 'init_autoloader.php';

    Zend\Mvc\Application::init(require 'config/application.config.php')->run();

    $appkey = 'appkey';
    $someid = id;
    $something = 'something';
    $else = 'else';

    $divarray = Array
    (
        'HEAL' = Array(
            [0] = "WARLOCK",
            [1] = "PRIEST",
            [2] = "ROGUE",
            [3] = "WARRIOR",
            [4] = "MAGE"
        ),
        "someENTRY" = 'YES'
    );
    $oxClient = new \Zend\XmlRpc\Client('http://link-to-server.php');

    $somenewrequest = $oxClient->call('class.OfAPI',array($appkey,$someid,$something,$else,$divarray));

    $res = $oxClient->getLastResponse();

    echo $res;

    $client = new \Zend\XmlRpc\Client('http://link-to-server.php');

    if($m !== FALSE) {
        $j = 1;

        while($img = mysqli_fetch_assoc($m)) {
            $pather = str_replace('../',"",$img['img_path']);
            $url = str_replace('www.', "", $_SERVER['HTTP_HOST']);

            $imagedata = file_get_contents('OUR/FILE/PATH/OF/SERVER'.$url.'/'.$pather);

            $base64 = base64_encode($imagedata);

            $SOMEID = $res;
            $image = $base64;

            $client->call('CLASS.IMAGESOMETHING',array($appkey,$usr,$psw,$res,$image));

            $j++;
        }
    }

    $fin = mysqli_query($conn, "UPDATE our_db SET avalue = '1' WHERE somefield = '$_POST[id]'");

    echo 'You succeeded in doing w/e';

}

排除由于必须重写一半代码以保护敏感信息而可能做的所有小错误,我想知道我可以更改的内容,以便我可以看到响应弹出在ajax所在的页面上运行

我在$ res上尝试了JSON.encode,但似乎并没有解决任何问题。是否有我缺少的东西或我可以采取不同的方式获得我需要的响应,甚至可以看到ajax变量是否通过php文档。

无论哪种方式,我都会很高兴知道我做错了什么,所以我可以改进,而不必在将来遇到问题。

提前致谢!

1 个答案:

答案 0 :(得分:0)

  1. $.(ajax)中,请将id放在引号中以确保将其解释为字段名称:
  2. data: {'id':id},

    1. 使用Google Chrome浏览器的开发者工具来检查发送到服务器的POST请求。这是一个非常好的介绍:
    2. https://blog.versionone.com/spy-on-browser-http-requests/