将jquery中的值发送到php并返回页面

时间:2014-01-01 13:20:13

标签: javascript php jquery html sql

我正在努力使用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();
});

加载内容和textarea的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());

但我正在绞尽脑汁想知道如何去做。

任何人都可以帮忙???

3 个答案:

答案 0 :(得分:2)

将其放入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编辑将无效,您将需要使用一个类。

答案 1 :(得分:1)

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

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

你可以使用类似的东西在php中获得这个值:

$_GET['blog_id']

答案 2 :(得分:1)

H i,

在你的功能中

  $('#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){ ... 

或类似的变化..

...