无法让jQuery(或javascript)将我的变量传递给下一页

时间:2013-12-31 03:44:46

标签: javascript php jquery

我正在修改一个PHP脚本,它将变量传递给下一个PHP页面,但是通过jQuery(或javascript)脚本而不是使用带有POST方法的表单。我阅读了整个jQuery(或javascript)脚本并了解作者如何将他的变量传递给下一个PHP页面,然后将我的变量添加到脚本中,就像他做的那样,但不管我做什么,该死的脚本只传递他的变量,它不会对我的变量做任何事情。我很困惑,也无法理解为什么。这是我的代码:

允许用户输入我的变量(帐户和密码)的HTML表单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>[ChipVN] PHP Image Uploader 4.0 - chiplove.9xpro</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script  type="text/ecmascript" src="jquery.js?v=3.1"></script>
<script  type="text/ecmascript" src="script.js?v=3.1"></script>
</head>

<body>
<div class="wrapper">
    <div id="header">
        <h1>Picasa Image Uploader</h1>
        <div class="description">yurivn.net</div>
    </div>
    <div class="body">
        <div class="option">            
            <div class="rows">
                <span>Nhập thông tin tài khoản google:</span><br/>
                <div style="margin-top: 10px;margin-bottom: 10px;">
                <span>Tên tài khoản: </span><input type="text" id="account" value="myaccount" /><br/>
                <span>Mật khẩu: </span><input type="password" id="password" value="mypassword" />
                </div>
            </div>
            <div class="rows method uploadfile">
                 <div class="upload">
                    <span>Nhấn Browser để chọn file upload</span>
                    <div id="embed"></div>
                 </div>
            </div>

            <div class="rows method transload">
                <span>Nhập link ảnh vào để transload</span> 
                <div><textarea class="links"></textarea></div>
                <span class="note">(Mỗi link ảnh 1  dòng, có hỗ trợ link ảnh trong thẻ [IMG])</span>
                <div><input type="button" class="button" value="Transload" /></div>
            </div>
            <div class="rows warning">Trình duyệt của bạn phải bật javascript để sử dụng công cụ này</div>
        </div><!--/.option-->
    </div>
</div><!--/#wrapper-->
<div class="wrapper">
    <div class="body">
        <div id="result"></div>
        <div id="status"></div>
        <div id="list" style="display:none">
            <div class="format">
                <a href="javascript:;" name="direct">Link trực tiếp</a>
                <a href="javascript:;" name="bbcode">Chèn vào Forum</a>
                <a href="javascript:;" name="html">Chèn vào website</a>
                <a href="javascript:;" name="removesub">Remove sub</a>
            </div>
            <div><textarea class="links" onclick="this.select()"></textarea></div>
        </div>
    </div>

</div>

</body>
</html>
jQuery(或javascript)脚本 - 将变量传递到下一个PHP页面:作者的变量是服务器,调整大小,wartermark,logo,我的是帐户和密码

/**
 * c-Image Uploader, use to upload image to some services (picasa, imageshack, imgur ...etc)
 *
 * @project     Image Uploader
 * @author      Phan Thanh Cong <chiplove.9xpro@gmail.com>
 * @since       June 17, 2010
 * @version     3.1
 * @since       March 8, 2012
 * @copyright   chiplove.9xpro
*/

// Default options
var options = {
    watermark:  0, // 1 or 0
    logo:       3, // danh sách logo trong file upload
    resize:     0, // tương tự logo
    server:     3, // trong file upload và index
    format:     'bbcode',   //danh sách các link trả về đc format theo bbcode, html và link trực tiếp
    removesub:  0, // dành cho link của imageshack.us
    method:     'uploadfile', // uploadfile/ transload
        account:        'myaccount',
        password:       'mypassword'
}

$(function(){
    renderUploader();
    clearlist();    
    $(".warning").hide();

    // set default
    $('input:radio[name=watermark]').removeAttr("checked").filter('[value='+getWatermark()+']').attr('checked', true);

    $('input:radio[name=logo]').removeAttr("checked").filter('[value='+getLogo()+']').attr('checked', true);

    $("#resize option").filter('[value='+getResize()+']').attr('selected', true);

    $("#server option").filter('[value='+getServer()+']').attr('selected', true);

    $(".method").hide();
    $("."+getMethod()).slideDown();

    // change value 
    $('input:radio').click(function(){
        $.cookie($(this).attr('name'), $(this).val());
        renderUploader();   
    }); 
    $("#resize, #server, #account, #password").change(function(){
        $.cookie($(this).attr('id'), $(this).val());
        renderUploader();   
    });

    $("#uploadfile").click(function(){
        $(".transload").hide();
        $(".uploadfile").slideDown();
        $.cookie('method', 'uploadfile');
        renderUploader();   
        clearlist();
    });
    $("#transload").click(function(){
        $(".uploadfile").hide();
        $(".transload").slideDown();
        $.cookie('method', 'transload');
        clearlist();
    });

    $(".format a").click(function() {
        var name = $(this).attr('name');
        if(name != 'removesub') {
            $.cookie('format', name);
        }
        else {
            var removesub = getRemovesub() == 0 ? 1 : 0;
            $.cookie('removesub', removesub);
        }
        showList();
    });

    // transload click
    $(".transload .button").click(function(){
        transload();
    });

});

function getRemovesub() {
    return $.cookie('removesub') == null ? options.removesub : $.cookie('removesub');
}
function getFormat() {
    return $.cookie('format') == null ? options.format : $.cookie('format');
}
function getMethod() {
    return $.cookie('method') == null ? options.method : $.cookie('method');
}
function getWatermark() {
    return $.cookie('watermark') == null ? options.watermark : $.cookie('watermark');
}
function getLogo() {
    return $.cookie('logo') == null ? options.logo : $.cookie('logo');
}
function getResize() {
    return $.cookie('resize') == null ? options.resize : $.cookie('resize');
}
function getServer() {
    return $.cookie('server') == null ? options.server : $.cookie('server');
}
function getAccount() {
    return $.cookie('account') == null ? options.account : $.cookie('account');
}
function getPassword() {
    return $.cookie('password') == null ? options.password : $.cookie('password');
}


function renderUploader() {
    var html = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="75" height="25"> \
        <param name="movie" value="upload.swf" /> \
        <param name="wmode" value="transparent" /> \
        <param name="allowFullScreen" value="true" /> \
        <param name="allowScriptAccess" value="always" />  \
        <param name="watermark" value="'+getWatermark()+'" /> \
        <param name="logo" value="'+getLogo()+'" /> \
        <param name="resize" value="'+getResize()+'" /> \
        <param name="server" value="'+getServer()+'" /> \
                <param name="account" value="'+getAccount()+'" /> \
                <param name="password" value="'+getPassword()+'" /> \
        <embed name="flashplayer" src="upload.swf" flashvars="'
            +'watermark='+getWatermark()
            +'&logo='+getLogo()
            +'&resize='+getResize()
            +'&server='+getServer()
            +'&account='+getAccount()
            +'&password='+getPassword()                    
        +'" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="75" height="25" wmode="transparent"></embed> \
        </object>';
    $("#embed").html(html); 
}

var iloadPosition = 0;
var iload = false;
var loadInterval = 0;
function loading(status) {
    iloadPosition = 0;
    if(status == false) {
        iload = false;
        if(document.getElementById('process') != null) {
            $('#process').html(''); 
            $('#status').html('');
        }
        clearInterval(loadInterval);
        loadInterval = 0;
    }
    else {
        iload = true;
        $('#status').html('Loading <span id="process"></span>');
        if( loadInterval <= 0) {
            loadInterval = setInterval('iloading();',160);
        }
    }
}
function iloading() {
    if (iload) {
       // var icon = new Array('|', '/', '-', '\\');
        var icon = new Array('.', '..', '...', '....');
        //var icon = new Array('|', '||', '|||', '||||', '|||||', '||||||');
        iloadPosition = iloadPosition >= icon.length ? 0 : iloadPosition;
        $('#process').html(icon[iloadPosition]);
        iloadPosition++;
    } 
}

function responseStatus(msg) {
    if (msg == 'Done!') {
        loading(false);
        showList();
    }
    $('#status').html(msg);
}

// hàm hiển thị ảnh
function displaypic(name, url) {
    $("#result").append('<div><span class="name">'+name+'</span><input type="text" class="link" onclick="this.select()" value="'+url+'" /></div>');
    showList();
}
// xóa list link trả về
function clearlist() {  
    $('#status').html('');
    $("#result").html('');
    $("#list .links").val('');
}
function showList() {

    $("#list").slideDown();
    var code;
    if (getFormat() == 'html') {
        code = new Array('<img src="', '" />');
    } 
    else if (getFormat() == 'bbcode') {
        code = new Array('[IMG]', '[/IMG]');
    } 
    else {
        code = new Array('', '');
    }
    var links = "";
    $("#result .link").each(function() {
        var url = $(this).val();
        if(getRemovesub()) {
            url = removesub(url);
            $(this).val(url);
        }
        if(url.substring(0, 4) != 'http') {
            return;
        }
        links += code[0] + url + code[1] +"\n";
    });
    $("#list .links").slideDown().val(links);
}

function removesub(url) {
    re = /(https?:\/\/)([^\.]*?)(\.imageshack\.us\/)(img[^\.\/]*)(.*?\.)(jpg|png|bmp|gif|jpeg)/ig;
    if(m = re.exec(url)) {
        if (getRemovesub() == 0) {
            url = url.replace(m[1] + m[2], m[1] + 'a');
        } else {
            url = url.replace(m[1] + m[2], m[1] + m[4]); 
        }
    }
    return url;
}
/****** TRANSLOAD ****/
function getInputLinks() {
    var text = $(".transload .links").val();
    var re = /.*?(\[IMG\])?(https?[^\\\n[]+)(\[\/IMG\])?/ig;
    var m;
    var links = new Array();
    var i = 0;
    while (m = re.exec(text)) {
       links[i++] = $.trim(m[2]);
    }
    return links;
}
function doTransload(id, links) {
    var stt = id + 1;
    var url = links[id];
    $.ajax({
        data: "id=453&action=test",
        url: 'upload.php',  
        cache: false,
        type: "POST",
        success: function(msg){
            displaypic(stt, msg);
            if(stt < links.length) {
                doTransload(stt, links);
            }
            else {
                responseStatus('Done!');
            }
        },
        error: function(){
            alert("Có lỗi, vui lòng thử lại");
        }
    });
}
function transload() {
    clearlist();
    var links = getInputLinks();
    if(links.length == 0) {
        alert('Bạn cần phải nhập đường dẫn ảnh');
        return;
    }
    loading();
    doTransload(0, links);
}

下一个PHP页面:我在PHP脚本末尾有echo 'image=' . var_export($_REQUEST, true);来打印选择要上传的内容后得到的变量,我的变量不在这里。

<?php
error_reporting(E_ALL & ~E_NOTICE);
date_default_timezone_set('Asia/Ho_Chi_Minh');

session_start();

define('DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
include DIR . 'library/ChipVN/Loader.php';
\ChipVN\Loader::registerAutoLoad();


// fiter
$params = array('server', 'resize', 'watermark', 'logo', 'account', 'password');
foreach($params as $param)
{
    $name = $param . 'id';
    $data = intval($_REQUEST[$param]);
    if($data < 0) 
    {
        $data = 0;
    }
    ${$name} = $data;
}

##################### START CONFIG #######################

$sitename = 'website';

/**
 * Tạo và CHMOD folder này sang 777
*/
$tempdir = DIR . 'temp/';

// danh sách logo
$logolist = array(
    1 => 'logo1.png', 
    2 => 'logo2.png',
    3 => 'logo3.png',
);
// Nếu logo yêu cầu ko có trong danh sách thì dùng logo1.png 
$default['logo'] = 'logo1.png';

// vị trí logo (right bottom, right center, right top, left top, .v.v.)
$logoPosition = 'rb';



// kích cỡ resize
$resizelist = array(
    0   => 0, // ko resize
    1   => 100, 
    2   => 150,
    3   => 320,
    4   => 640,
    5   => 800,
    6   => 1024
);
//$default['resize'] = 800;
$default['resize'] = 0;


##################### END CONFIG #######################



$watermark = $watermarkid > 0 ? TRUE : FALSE;

$logoPath = DIR . 'logo/' . (in_array($logoid, array_keys($logolist)) ? $logolist[$logoid] : $default['logo']);

$resizeWidth = in_array($resizeid, array_keys($resizelist)) ? $resizelist[$resizeid] : $default['resize'];


if($_FILES['Filedata'] AND !$_FILES['Filedata']['error'])
{
    move_uploaded_file($_FILES['Filedata']['tmp_name'], $imagePath = $tempdir . $sitename .date('dmY'). '.jpg');
    $isUpload = TRUE;
}
else if($url = trim($_POST['url']))
{
    $isUpload = FALSE;
    \ChipVN\Image::leech($url, $imagePath = $tempdir . $sitename . date('dmY').'.jpg');
}


// resize
if($resizeWidth > 0)
{
    \ChipVN\Image::resize($imagePath, $resizeWidth, 0);
}
// watermark
if($watermark)
{
    \ChipVN\Image::watermark($imagePath, $logoPath, $logoPosition);
}

switch($serverid)
{
    case 1: 
        $service = 'Imageshack';
        break;
    case 2:
        $service = 'Imgur';
        break;
    case 3:
        $service = 'Picasa';
        break;
    case 4:
        $service = 'Flickr';
        break;  
    default:
        $service = 'Picasa';            
}

$uploader = \ChipVN\Image_Uploader::factory($service);

switch($service)
{
    case 'Imageshack':
        /**
         * Không bắt buộc đăng nhập
         * Có thể đăng nhập hoặc ko. Tuy nhiên nên tham khảo quy định của ImageShack ở đây http://imageshack.us/content.php?page=rules
         * Xóa comment "#" ở bên dưới nếu muốn up vào account của bạn
        **/
        # $uploader->login('your user', 'your pass');
        break;

    case 'Imgur':
        /**
         * Không bắt buộc đăng nhập
         * Có thể đăng nhập hoặc ko, nhưng ảnh mà ko up vào account thì có thể bị xóa sau 1 thời gian.
         * Account thường chỉ up đc 225 ảnh. Xem thông tin upgrade lên PRO tại đây https://imgur.com/register/upgrade
         * Xóa comment "#" ở bên dưới nếu muốn up vào account của bạn
        **/
        # $uploader->login('your user', 'your pass');
        break;  

    case 'Picasa':
        /**
         * Picasa bắt buộc phải đăng nhập 
         * AlbumID lấy ở link RSS trong album (ko biết thì tự tìm hiểu ở google)
         * Phần albumID có thể set 1 array('id1', 'id2'); Code sẽ tự động lấy ngẫu nhiên 1 album trong số đó để upload vào.
         * Nếu ko setAlbumID thì code sẽ up vào album default của picasa 
         * Giới hạn upload ca Picasa xem tại đây: https://support.google.com/picasa/answer/43879?hl=vi
         * Nếu ko dùng AlbumID thì thêm dấu # ở trước
        */
        $uploader->login($accountid, $passwordid);
        #$uploader->setAlbumID('album id của bạn');

        break;  
}

if(!$imagePath)
{
    die('Mising an image');
}
$url = $uploader->upload($imagePath);

if(file_exists($imagePath)) 
{
    unlink($imagePath);
}

if($isUpload)
{
    echo 'image=' . var_export($_REQUEST, true);
}
else
{
    echo $url;
}

注意:

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我猜您想将HTML表单中的帐户用户名和密码输入传递给PHP脚本。这是现在的AJAXing数据的JavaScript:

$.ajax({
    data: "id=453&action=test",
    url: 'upload.php',  
    cache: false,
    type: "POST",

“data”属性实际上是发布到upload.php文件上的。即使您将AJAX类型标识为POST,您当前的数据传输也会以GET格式显示。

您需要类似以下内容才能遵守POST传输格式:

$.ajax({
    data: {username: my_username, password: my_password},
    url: 'upload.php',  
    cache: false,
    type: "POST",

我查看了其余的JavaScript,看起来现在还没有抓住用户输入。因此,在您使用上面编辑过的AJAX代码之前,您需要在上述内容之前将以下内容放入JavaScript中。

var my_username = document.getElementById("account").value;
var my_password = document.getElementById("password").value;

上面告诉JavaScript从您的用户名和密码输入中获取值,并将它们设置为“my_username”和“my_password”变量(最终将传递给AJAX调用,然后发送到您的PHP页面)。 / p>

您似乎也缺少PHP文件中用于获取POST值的代码。您可以使用以下格式抓取它们:

$username = $_POST["username"];
$password = $_POST["password"];

然后您可以根据需要使用变量。

看看这个tutorial。它为您提供有关您要完成的任务的分步说明