ajax嵌入php代码,php ajax 实现

发布时间:2022-11-21

本文目录一览:

  1. php:使用ajax是怎样和php文件连接在一起的?
  2. php +ajax代码详解 大神!
  3. ajax调用PHP类库中的函数
  4. php如何和ajax搭配使用
  5. PHP中运用jQuery的Ajax跨域调用实现代码

php:使用ajax是怎样和php文件连接在一起的?

通过 GetXmlHttpObject() 对象的一些方法和 PHP 通信的。比如下面这段:

xmlHttp = GetXmlHttpObject();
if (xmlHttp == null) {
    alert("您的浏览器不支持AJAX!");
    return;
}
var url = "getcustomer.php";
url = url + "?q=" + str;
url = url + "sid=" + Math.random();
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);

服务器端可以通过 $_GET 获得变量 q 的值,从而作出反应。

php +ajax代码详解 大神!

你是在浏览器中同时打开 1.php2.php 吗? 怎么会有两个表单,在不同的页面上? 然后,你那个 0.js 文件是拿来做什么的?

ajax调用PHP类库中的函数

直接调用不可能,但可以绕过去调用。

a.php

<?php
$_token = md5(time()); // 令牌
$_SESSION['_TOKEN'] = $_token;
// ...
?>

HTML

<form>
    <input name="_TOKEN" value="<?php print $_token; ?>">
</form>

这里说一下令牌,令牌一般是服务器端验证提交数据是否为合法。 与验证码功能差不多,不过验证码需要手动输入,这个是程序内部使用。

处理POST

<?php
if ($_POST['_TOKEN'] == $_SESSION['_TOKEN']) {
    $_SESSION['_TOKEN'] = ''; // 清除令牌,防止网络延缓的再次提交。
    // ...
}
?>

然后是AJAX

上面我为什么要在你原来的程序上加入令牌呢,因为可以随意的调用php函数是很不安全的,很容易被有心人利用,所以做一点安全保护,当然不一定绝对安全。

function _new_ajax() {
    // 创建XMLHTTPRequests
    return xhr;
}
function _ajax(_option) { // url, data, type, async
    // 初始化
    if (typeof _option.url == 'undefined' || _option.url == '') {
        alert('ajax错误,没有定义请求路径');
        return false;
    }
    _option.data = _option.data || {};
    _option.type = _option.type || 'GET';
    _option.async = _option.async || true;
    _option.callback = _option.callback || function() {};
    // 开始请求
    var xhr = _new_ajax();
    if (typeof _option.data == 'string') {
        _option.url += (_option.url.match(/\?/) ? "" : "?") + _option.data;
    } else {
        for (var i in _option.data) {
            _option.url += (_option.url.match(/\?/) ? "" : "?") + i + '=' + _option.data[i];
        }
    }
    xhr.open(_option.type, _option.url, _option.async);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            var res = xhr.responseText;
            _option.callback(res);
        }
    };
    xhr.send(null);
    xhr = null;
}

验证用户是否存在就这样:

function check_user_id() {
    document.getElementById('useridexist').innerHTML = "Check the ID, Please wait...";
    var user_id = document.login.userid.value;
    // 这里是上面说的,要直接使用函数库,必须安全验证
    var _TOKEN = document.login._TOKEN.value;
    _ajax({
        url: 'class/useridexist.php',
        data: { _TOKEN: _TOKEN, function: 'check_user', id: user_id }, // 调用php函数check_user
        callback: function(res) {
            document.getElementById('useridexist').innerHTML = res;
        }
    });
}

好了,准备就绪,现在看PHP端了。

b.php

<?php
if ($_GET['_TOKEN'] == $_SESSION['_TOKEN']) {
    // 这里不清除令牌,因为提交post还要使用,验证在前,提交post在后
    $function = $_GET['function'];
    if (function_exists($function)) {
        $function($_GET);
    } else {
        print '函数' . $function . '不存在';
    }
}
// 以下为函数库
function check_user($get) {
    // .....验证存在否,输出
}
?>

php如何和ajax搭配使用

需要先向目标 Pager.php 传值: 即应该在 ajaxSubmit() 函数的 var URL="Pager.php?active_time_start="+start_time+"active_time_end="+end_time; 语句上再加上改变后的 SQL 语句,然后再在 Pager.php 文件内予以执行,然后再将其(即 Pager.php)执行结果传回! 如:var URL="Pager.php?……end_timeSql=Sql;"

PHP中运用jQuery的Ajax跨域调用实现代码

可以在页面定义一个调用方法,如下:

function getData() {
    $.getJSON("?", {
        "m": "data", // 指定php的文件名字
        "act": "getdata", // 指定php文件中的方法
        "name": "问题儿童" // 传入的参数
    }, function(data) {
        // 获得返回值
    });
}

对应链接下(123.123.123.123)的PHP文件,一般默认先调用 index.php 文件,通过 index.php 文件内的方法处理后,转到对应的php文件,并且找到对应的方法,执行之。

index.php

<?php
/**
 * 入口文件
 */
$string = $_SERVER["REQUEST_URI"]; // 获取访问的url
$m = get_m($string);
$file_path = "app/" . $m . ".php";
define('IS_INDEX', true); // 阻止直接访问app目录
require($file_path);
/**
 * 获取访问php文件
 *
 * @param string $url
 */
function get_m($url) {
    $strings = explode('m=', $url);
    $res = explode("", $strings[1]);
    return empty($res[0]) ? 'index' : $res[0];
}
?>

data.php

<?php
/**
 * data文件
 */
$act = !empty($_GET['act']) ? $_GET['act'] : '';
if ($act == 'getdata') {
    $name = "我的名字叫:" . $_REQUEST['name'];
    echo $_REQUEST["callback"] . "(" . json_encode($name) . ")";
}
?>

成功调用后,画面就能获取到返回的 JSON 数据了。