使用javascript向php发送一个整数值并返回值

时间:2015-06-28 12:55:58

标签: javascript php jquery ajax

我在我的索引中有这个div区域,我想用它作为一个按钮(用于图形问题),当这个按钮被cliked时,我希望它将这个值发送到php文件,我想根据以下内容返回一些值这个价值。这是我迄今为止所做的,但它根本不起作用。

这是我的output.php(索引)

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript"> 
	int sayac = 1;
	$(document).delegate("#klikme", "click", function() {
		$.post('sayac.php',{"komut": sayac }, function(data){
			$('#output').html(data);
		});
		sayac = sayac + 1;
	});
</script>
<div id = "klikme">
	KLİK ME!
</div>
<div id = "output">
    <?php include 'sayac.php'?>
</div>

sayac.php

if(isset($_POST["komut"]))
{
    switch($_POST["komut"])
    {
        case 1:
            echo "This is one";
            break;
        case 2:
            echo "This is two";
            break;
        default:
            echo "Something is wrong";
            break;
    }
}
return false;

5 个答案:

答案 0 :(得分:1)

在您的php文件中,您忘记了案例2中的中断语句,这会导致问题。

if(isset($_POST["komut"]))
{
    switch($_POST["komut"])
    {
        case 1:
            echo "This is one";
            break;
        case 2:
            echo "This is two";
            break;
        default:
            echo "Something is wrong";
            break;
    }
}

如果我是你,我会像下面那样重新配置html,但这取决于你。因此,要在javascript中定义变量,您需要使用var关键字。

<div id="klikme">
    KLİK ME!
</div>
<div id="output"></div>
<script type="text/javascript">
    var sayac = 1;
    $(document).delegate("#klikme", "click", function() {
        $.post('sayac.php',{"komut": sayac++ }).success(function(data){
            $('#output').html(data);
        });
    });
</script>

答案 1 :(得分:1)

此脚本的正确版本是:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script> 
(function($) {
  var counter = 1;
  $(document).ready(function() {
    $('#clickme').on("click", function(){
      counter++; // first increment counter
    	$.post('http://localhost/index.php', {"counter" : counter }, function(data) { 
    		$('#output').html(data);
    	});
    	$('#counter').text(counter);
    });
  });
})(jQuery);
</script>
<div id="clickme">Click ME!</div>
<div id="counter">1</div>
<div id="output"><?php include 'index.php'; ?></div>

注意一些事情:

  • 由于variable scope
  • ,整个代码在函数(function($) { }(jQuery)中已接近
  • 在文档“准备就绪”之前,页面不能为manipulated safely我们已在$(document).ready(function() { });
  • 中关闭所有内容
  • 我们使用on()代替delegate() since jQuery 1.7
  • 当您拨打$.post()
  • 时,使用整个网址会更安全

你的PHP文件可以是这样的(see $_REQUEST):

<strong><?php echo intval($_REQUEST['counter']); ?></strong>

答案 2 :(得分:0)

它无法正常工作,因为您遇到错误,修复它们并重试。

更改int sayac = 1; to sayac = 1;在output.php中

将默认值更改为默认值:在sayac.php中

答案 3 :(得分:0)

在将JavaScript事件绑定到页面之前,我会等到文档加载完毕,这是因为在某些浏览器中,您的代码将在您尝试绑定的元素之前开始执行,这意味着您的事件没有绑定。 / p>

我会像这样重写你的JS代码:

var sayac = 1;
$(document).ready(function() {

    $(document).delegate("#klikme", "click", function() {
        $.post('sayac.php',{"komut": sayac }, function(data){
            $('#output').html(data);
        });
        sayac = sayac + 1;
    });
});

但是,考虑到委托的性质,你会认为这不是一个问题 - 可能的原因是来自int sayac的JS错误,如下所述。

答案 4 :(得分:0)

您的代码中存在2个小的语法错误,这些错误打破了它:

使用Javascript:

//This is not C, define a variable with "var", not int sayac
var sayac = 1;

PHP:

switch($_POST["komut"])
{
    case "1":
        echo "This is one";
        break;
    case "2":
        echo "This is two";
        break;//<- put "break" here to print only the message for 2
    default: //<- put ":" here
        echo "Something is wrong";
        break;
}