调整预先制作的URL缩短脚本

时间:2014-01-18 07:44:58

标签: javascript jquery

我不熟悉javascript,我确信我遇到的问题有一个简单的解决方案,我只需要一些方向。

下面的脚本不是我写的,它是一个URL缩短脚本。当用户输入长URL并按提交时,脚本会创建一个随机短URL并在输入字段中显示短URL。我想知道的是javascript的哪一部分控制输入中短URL的显示?我希望更改缩短URL后显示的内容。

page.php文件

<script src="script.js" type="text/javascript"></script>
    <form action="#" id="form-add-url" class="profile" method="post" onsubmit="return add_url()">
    <input type="text" id="urls-url" name="url" class="widefat-main" placeholder="Paste a link" tabindex="1" title="URL">
    <input type="hidden" name="action" value="add_url">
    <button type="submit" class="button-main" tabindex="3">Submit</button>
    </form>

的script.js

function add_url() {
    jQuery("#front-url .loading-dark").fadeIn(200);
    jQuery.post(url_base+"ajax.php", jQuery("#form-add-url").serialize(),
        function(return_data) {
            jQuery("#front-url .loading-dark").fadeOut(200);
            data = jQuery.parseJSON(return_data);
            var status = data.status;
            if (status == "OK") {
                jQuery("#urls-url").val(data.url);
            } else if (status == "OK2") {
                jQuery("#search_query").val("");
                jQuery("#page_number").val("");
                reload_urls("", 1);
                jQuery("#urls-url").val(data.url);
            } else if (status == "ERROR") {
                show_notification("error", data.message, 3000);
            } else {
                show_notification("error", "Internal error. Please contact administrator.", 3000);
            }
        }
    );
    return false;
}

我的PHP:

case 'add_url':
    if ($options['only_registered'] == 'yes' && !$active_user)
        {
        $return_object = new stdClass();
        $return_object->message = 'URL shortening is available for registerd users only.';
        $return_object->status = 'ERROR';
        echo json_encode($return_object);
        exit;
        }

    $url = trim(stripslashes($_POST['url']));
    if (substr(strtolower($url) , 0, 7) != "http://" && substr(strtolower($url) , 0, 8) != "https://") $url = 'http://' . $url;
    $error = '';
    if ($url == '')
        {
        $error = 'Hey, seems you forgot to paste a link.';
        }
      else
    if (!preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url))
        {
        $error = 'Are you sure you submitted the correct URL?';
        }
      else
    if (sizeof($url) > 255)
        {
        $error = 'Hey, seems URL is too long.';
        }

    if (!empty($error))
        {
        $return_object = new stdClass();
        $return_object->message = $error;
        $return_object->status = 'ERROR';
        echo json_encode($return_object);
        exit;
        }

    if (substr(strtolower($url) , 0, strlen($url_base)) == strtolower($url_base))
        {
        $return_object = new stdClass();
        $return_object->message = 'Hey. Seems this URL is short enough. ;-)';
        $return_object->status = 'ERROR';
        echo json_encode($return_object);
        exit;
        }

    if ($active_user) $user_id = $active_user['id'];
      else $user_id = 0;
    $url_details = $icdb->get_row("SELECT * FROM " . $icdb->prefix . "urls WHERE url = '" . mysql_real_escape_string($url) . "' AND deleted = '0' AND user_id = '" . $user_id . "'");
    if ($url_details)
        {
        $icdb->query("UPDATE " . $icdb->prefix . "urls SET created = '" . time() . "' WHERE id = '" . $url_details['id'] . "'");
        $url_code = $url_details['url_code'];
        }
      else
        {
        $icdb->query("INSERT INTO " . $icdb->prefix . "urls (user_id, url, url_code, redirects, created, blocked, deleted, short) VALUES ('" . $user_id . "', '" . mysql_real_escape_string($url) . "', '', '0', '" . time() . "', '0', '0', '" . $_POST[short] . "')");
        $url_code = url_code($icdb->insert_id);
        $icdb->query("UPDATE " . $icdb->prefix . "urls SET url_code = '" . $url_code . "' WHERE id = '" . $icdb->insert_id . "'");
        }

    $htaccess = url_rewrite();
    $return_object = new stdClass();
    if ($active_user)
        {
        $return_object->status = 'OK2';
        }
      else $return_object->status = 'OK';
    $return_object->url = $url_base . ($htaccess ? '' : '?u=') . $url_code;
    echo json_encode($return_object);
    exit;
    break;

4 个答案:

答案 0 :(得分:0)

jQuery("#urls-url").val(data.url);

在帖子对url_base +“ajax.php”的响应中,返回一个JSON字符串。此响应的URL部分(data.url)用作您输入的值(#urls-url)。

答案 1 :(得分:0)

我相信这就是你所追求的:

jQuery("#urls-url").val(data.url);

.val()方法用于获取和设置表单元素的值,例如inputselecttextarea

答案 2 :(得分:0)

检查出来

    function add_url() {
        // fading effect
        jQuery("#front-url .loading-dark").fadeIn(200);
        // posting with ajax post method
        jQuery.post(url_base+"ajax.php", jQuery("#form-add-url").serialize(),
            // success function after request complete
            function(return_data) {
                // applying fade out effect
                jQuery("#front-url .loading-dark").fadeOut(200);

                //parsing response string from server into javascript object
                data = jQuery.parseJSON(return_data);
                // getting status value
                var status = data.status;
                if (status == "OK") {
                    //putting [data.url] value in html element with id [urls-url]
                    //data.url => url value from server
                    jQuery("#urls-url").val(data.url);
                } else if (status == "OK2") {
                    jQuery("#search_query").val("");
                    jQuery("#page_number").val("");
                    reload_urls("", 1);
                    jQuery("#urls-url").val(data.url);
                } else if (status == "ERROR") {
                    show_notification("error", data.message, 3000);
                } else {
                    show_notification("error", "Internal error. Please contact administrator.", 3000);
                }
            }
        );
        return false;
    }

答案 3 :(得分:0)

感谢您的投入!非常感谢。 ajax.php中的第4行(111.118.164.146/~jodeleep/ajax.php.html)是我需要寻找的。