将变量从Javascript/JQuery传递到PHP

将变量从Javascript/JQuery传递到PHP,php,jquery,ajax,variables,Php,Jquery,Ajax,Variables,我还是JQuery新手,正在尝试学习如何在不刷新页面的情况下提交表单。。。 我想要的是,在提交表单时,我在“headline”和“subheadline”上键入的值可以传递到php变量中(这样我就可以将数据回送/插入数据库等) 所以,我把 "<? echo $_POST['headline']; ?>" “” 在 您的更改已保存! 但当我填写表单并单击提交按钮时,它只显示“您的更改已保存!”。也就是说,变量不能传递给PHP HTML和JS组合成一个文件。我将URL方法保留在.

我还是JQuery新手,正在尝试学习如何在不刷新页面的情况下提交表单。。。 我想要的是,在提交表单时,我在“headline”和“subheadline”上键入的值可以传递到php变量中(这样我就可以将数据回送/插入数据库等)

所以,我把

"<? echo $_POST['headline']; ?>" 
“”

您的更改已保存!
但当我填写表单并单击提交按钮时,它只显示“您的更改已保存!”。也就是说,变量不能传递给PHP

HTML和JS组合成一个文件。我将URL方法保留在.ajax上,因为它是在同一个文件中处理的

HTML表单

<div id="submit-form">
<form action="" id="select-block" class="general-form">
<div class="input-wrap">
    <input class="clearme" name="Headline" value="Your headline here" id="headline"/>
</div>
<div class="input-wrap">
    <textarea class="clearme" name="Sub-Headline" id="subheadline">Sub Headline Here</textarea>
</div>

<input type="submit" class="submit-btn" value="SAVE" />
<span class="save-notice">Your change has been saved! <? echo $_POST['headline']; ?></span>
</form>
</div>

这里的副标题
您的更改已保存!
和JQUERY代码

<script type="text/javascript">

$(function() {  
  $(".save-notice").hide();
  $(".submit-btn").click(function() {  

    var headline = $("input#headline").val();
    var subheadline = $("textarea#subheadline").val();
    var dataString = 'headline='+ headline + '&subheadline=' + subheadline;
    alert(dataString)


        $(".save-notice").hide();
        $.ajax({  
        type: "POST",  
        url: "",
        data: dataString,
        success: function() {  
            $(".save-notice").show();
        }  
    });  
return false;  
  });  
});  

</script>

$(函数(){
$(“.save notice”).hide();
$(“.submit btn”)。单击(函数(){
var headline=$(“输入标题”).val();
var副标题=$(“textarea#subheadline”).val();
var数据字符串='标题='+标题+'&副标题行='+副标题行;
警报(数据字符串)
$(“.save notice”).hide();
$.ajax({
类型:“POST”,
url:“”,
数据:dataString,
成功:函数(){
$(“.save notice”).show();
}  
});  
返回false;
});  
});  

我在网上看到了几个例子/教程,如果可以这样做的话。您能提出建议吗?

您的
保存通知中的
$\u POST['headline']
是在加载页面时生成的。PHP运行,并输出一个HTML文件

当您发出AJAX请求时,返回到AJAX调用的页面将包含您的新值,但当前页面不包含

您可以发布到另一个页面,让该页面返回一个值,然后使用JavaScript更改div的值

或者,您可以尝试从返回的HTML页面提取数据

$(".save-notice").hide();
$.ajax({
    type: "POST",
    url: "",
    data: dataString,
    dataType: 'html', // the page returned
    success: function(data) {
        // get the data from the returned page
        $(".save-notice").html($('.save-notice', data).html());
        $(".save-notice").show();
    }
});

而不是添加代码来单击处理程序

$(".submit-btn").click(function() { ...  }
使用提交处理程序

$("#select-block").submit(function() {  
// your code
  var dataString = $(this).serialize();

});

您已经在javascript变量中设置了值:

var headline = $("input#headline").val();
var subheadline = $("textarea#subheadline").val();
您可以这样做:

$.ajax({
    type: "POST",
    url: "foo.php",
    data: {headline: headline, subheadline: subheadline},
        success: function() {
            $(".save-notice").show();
        }
});
$.post("foo.php", { headline: headline, subheadline: subheadline }, 
    function(data) {
        $(".save-notice").show();
    }
);
或者像这样:

$.ajax({
    type: "POST",
    url: "foo.php",
    data: {headline: headline, subheadline: subheadline},
        success: function() {
            $(".save-notice").show();
        }
});
$.post("foo.php", { headline: headline, subheadline: subheadline }, 
    function(data) {
        $(".save-notice").show();
    }
);
您可以看到,数据在键值对中传递:
{headline:headline,subheadline:subheadline}


您可以使用
$\u POST
访问它,比如
$\u POST['headline']
$\u POST['subheadline']

使用Firebug的控制台功能,您可以看到服务器对AJAX调用的响应。响应是像您希望的那样评估$\u POST变量,但是由于AJAX调用发生在幕后,所以您看不到它

要使脚本在不做太多修改的情况下工作,请尝试以下方法(不需要PHP):

  • 替换为
  • 插入
    $('#yourheadline').html(headline)
    $(“.save notice”).show()之前的行上
  • 我建议的另一件事是序列化表单以创建dataString变量,而不是逐个输入。如果您的输入被命名为
    headline
    subheadline
    而不是
    headline
    subheadline

    var dataString = $("#select-block").serialize();
    
    …将完成与以下相同的任务:

    var headline = $("input#headline").val();
    var subheadline = $("textarea#subheadline").val();
    var dataString = 'headline='+ headline + '&subheadline=' + subheadline;
    

    嗨,rkm,我如何获得PHP变量上使用的数据?问题已经解决了。实际上可以传递该值。在那一页上也没有回音