2014-01-18 58 views
0

我对JavaScript并不熟悉,我确定我遇到的问题有一个简单的解决方案,我只需要一些方向。调整预制URL缩短脚本

下面的脚本不是我写的,它是一个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; 
+0

你知道吗,你只需要以其长格式编写'jQuery'一次?通过将代码封装在'(function($){....})(jQuery);'中,无论是否使用了noConflict,都可以使用'$'。此外,**请更新您的问题标题是有意义的** – ThiefMaster

+0

@ThiefMaster - 请注意,它不是一个DOM就绪处理程序,这将是'jQuery(function($){....});' – adeneo

+0

我认为你正在寻找的代码的一部分是在服务器端,由Ajax返回...你有PHP代码? – Sergio

回答

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; 
    } 
0
jQuery("#urls-url").val(data.url); 

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

+0

因此,数据将从ajax.php返回? (http://111.118.164.146/~jodeleep/ajax.php.html) – ryerye

+0

url_base +'ajax.php';我不确定url_base的价值是什么,但是您可以找出使用控制台并检查您的XHR请求。 – meavo

+0

url_base是脚本安装的域。我稍微修改了脚本,以便短url域与安装脚本的域不一样 – ryerye

0

我相信这是你所追求的:

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

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

0

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