【问题标题】:Sending value in jquery to php and returning page将 jquery 中的值发送到 php 并返回页面
【发布时间】:2014-01-19 01:55:48
【问题描述】:

我正在努力使用 simplemodal 为我的博客加载编辑文本区域。我让它工作得很好,但我需要以某种方式向加载内容的 php 页面发送一个值。让我展示代码并解释更多。 好的标签来加载编辑器

<a class="blog_btns" id="edit" href="">Edit</a>

JQuery 加载到简单的模态窗口

jQuery(function($) {
    var contact = {
        message: null,
        init: function() {
            $('#edit').click(function(e) {
                e.preventDefault();
                // load the contact form using ajax
                $.get("../_Includes/edit.php", function(data) {
                    // create a modal dialog with the data
                    $(data).modal({
                        closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
                        position: ["15%", ],
                        overlayId: 'contact-overlay',
                        containerId: 'contact-container',
                        onOpen: contact.open,
                        onShow: contact.show,
                        onClose: contact.close
                    });
                });
            });
        },
        open: function(dialog) {
            dialog.overlay.fadeIn(200, function() {
                dialog.container.fadeIn(200, function() {
                    dialog.data.fadeIn(200, function() {
                        $('#contact-container').animate({
                            height: h
                        }, function() {
                            $('#contact-container form').fadeIn(200, function() {
                            });
                        });
                    });
                });
            });
        },
        show: function(dialog) {
            //to be added later
        },
        close: function(dialog) {
            dialog.overlay.fadeOut(200, function() {
                $.modal.close();
            });
        },
    };
    contact.init();
});

加载内容和文本区域的php页面

<?php
session_start();
define('HOSTNAME', '#');
define('DB_USERNAME', '#');
define('DB_PASSWORD', '#');
define('DATABASE', '#');
$link = mysql_connect(constant('HOSTNAME'), constant('DB_USERNAME'), constant('DB_PASSWORD')) or die("Database connection error, please check!");
mysql_select_db(constant('DATABASE'), $link) or die("Connection to the defined database not possible, please check!");
$sessionid = base64_decode($_SESSION['id']);
$sql = mysql_query("SELECT * FROM blogs WHERE id=233 LIMIT 1") or die(mysql_error());
while ($row = mysql_fetch_array($sql)) {
    $id = $row['id'];
    $title = $row['title'];
    $body = $row['body'];
    $tag_array = array();
    $result = mysql_query("SELECT tag FROM tags WHERE blog_id='$id' LIMIT 5") or die(mysql_error());
    while ($row = mysql_fetch_assoc($result)) {
        $rtag = str_replace(' ', '', $row['tag']);
        $tag_array[] = $rtag;
    }
    $tag_array = implode($tag_array, ",");
}
?>
<div class="content">
    <div class="reply" style="display:none;"></div><form name="editblog" id="editblog" action="#" method="post"><font color="#FFF"><strong>Title: </strong></font><input name="blogtitle" id="blogtitle" type="text" id="title"  size="80" maxlength="255" value="<?php echo $title; ?>" /><br /><br />
        <textarea cols="60" id="editblogbody" name="editblogbody" rows="20"><?php echo $body; ?></textarea><br />
        Please separate tages with a <strong>comma</strong>.<br />
        <font color="#FFF"><strong>Tags:</strong></font><input name="tags" id="tags" type="text" size="80" maxlength="255" value="<?php echo $tag_array; ?>" /><br /><br />
        <input type="submit" value="Post Blog" />
        <span id="blogFormProcessGif" style="display:none;"><img src="../_Images/loading.gif" width="28px" height="28px" alt="Loading" /></span></form>
    <script>CKEDITOR.replace("editblogbody");</script> </div>

所以窗口可以很好地加载来自 sql 查询的内容,但我需要通过在开始时单击的链接发送博客 ID 来使 sql 查询动态化。我正在考虑使用 rel 属性来返回值。我需要将此值发送到 sql 查询的 php 页面以加载正确的博客 somrthing,例如

$blogid = $_GET['blogig'];
$sql = mysql_query("SELECT * FROM blogs WHERE id='$blogid' LIMIT 1") or die(mysql_error());

但我正在绞尽脑汁想办法做到这一点。

谁能帮忙???

【问题讨论】:

    标签: javascript php jquery html sql


    【解决方案1】:

    将其放入rel 将起作用。使用data-id="123" 并使用$(this).data('id') 获得它会更好。使用 href 很好,例如href="#123".

    <a class="blog_btns" id="edit" href="#" data-id="123">Edit</a>
    <a class="blog_btns" id="edit" href="#" rel="123">Edit</a>
    <a class="blog_btns" id="edit" href="#123">Edit</a>
    

    您将其添加到 URL 查询字符串中

    $('#edit').click(function(e) {
        var url="../_Includes/edit.php?blog_id=" + $(this).data('id');
        // var url="../_Includes/edit.php?blog_id=" + this.rel;
        // var url="../_Includes/edit.php?blog_id=" + this.href.replace('#', '');
        $.get(url, function(data){ 
            // etc
    

    使用$_GET['blog_id']在PHP中获取它

    请注意如果有多个链接打开一个编辑模式,使用id编辑将不起作用,您需要使用一个类。

    【讨论】:

      【解决方案2】:

      您是否尝试在 jQuery $.get() 中使用 GET 参数,例如:

      "../_Includes/edit.php?blog_id=" + $('#edit').attr('rel')
      

      您可以使用类似的方法在 php 中获取此值:

      $_GET['blog_id']
      

      【讨论】:

        【解决方案3】:

        我,

        在你的职能范围内

          $('#edit').click(function (e) {
                    e.preventDefault();         
                    // load the contact form using ajax
                    $.get("../_Includes/edit.php", function(data){ ... 
        

        您可以使用

        发送 id
          $('#edit').click(function (e) {
                    e.preventDefault();         
                    // load the contact form using ajax
                    $.get("../_Includes/edit.php?blogid=BLOGID", function(data){ ... 
        

        php 可以将其作为常规参数获取。

        我假设您从中调用此函数的页面知道博客 ID 是什么,因为它是当前页面?

        关于这一点,当 PHP 最初渲染页面时,将博客 ID 添加到页面正文可能会很巧妙。

          <body id="BLOGID">
            .... 
        

        所以现在你的函数可以动态抓取它了:

                $('#edit').click(function (e) {
                    e.preventDefault();   
        
                      var blogid = $("body").attr("id);
        
                    // load the contact form using ajax
                    $.get("../_Includes/edit.php?blogid="+blogid, function(data){ ... 
        

        或类似的变体..

        ??

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-17
          • 1970-01-01
          • 1970-01-01
          • 2013-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多