2012-04-27 66 views
0

我希望有人可以帮我解决我的设计问题。我的index.php:PHP HTML JavaScript设计问题

其中包含一个JavaScript代码片段:

<script type="text/javascript"> 
$(function() { 
    $.getJSON('http://localhost/getData.php', function(data) { 

    foo... 

index.php文件还包含更新屏幕的一种形式:

<form action="index.php" method="post" /> 
<input type="submit" name="action" value="update" /></p> 

现在我的问题是我需要将一些变量传递给getData.php来更新屏幕。 getData可以和静态信息一起工作,但基于表单上的选择,数据将会改变。

什么是我传递变量的最佳方式?

或者我的设计不正确?

感谢


我更新的JavaScript看起来像这样:

<script type="text/javascript"> 
$(function() { 
$.getJSON('http://localhost/getData.php', { 
group_value: $('#group_id option:selected').val(), 
updatedb_value: $('#update_db_id').val() 
}, function(data) { 

然后我的形式如下:

<form id="myform" action="index.php" method="post" /> 
<select id="group_id" name="group"> 
<option value="0">Atlanta</option> 
<option value="1">Chicago</option> 
<option value="2">Los Angeles</option> 
<option value="3">New York</option> 
</select> 
<input type="submit" name="action" value="Update" /> 
<input type="checkbox" id="update_db_id" name="update_db" value="1" />Update DB?<br /> 
</form> 

无论我选择或检查,当过我点击更新按钮,JS控制台显示

GET http://localhost/getData.php?group_value=0&updatedb_value=1 

有什么建议吗?

+0

我建议改变'HTTP://本地主机/ getData.php'简单'/ getData.php' - 本地主机不会,如果你部署这个工作原样是一个真正的服务器。这一点,除非你使用JSONP,否则所有的URL都应该是相对于根域的。 – 2012-04-30 00:48:13

+0

感谢您的建议,但结果相同。无论我在表单上选择什么,我都会得到以下结果:'GET http://localhost/getData.php?group_value = 0&updatedb_value = 1'。 – 2012-04-30 13:17:50

+0

有没有人有任何其他建议?谢谢 – 2012-05-02 00:36:23

回答

2

您可以使用$(input_selector).val()得到一个表单输入的值,你可以把它传递给的getJSON作为对象,像这样:

$.getJSON('http://localhost/getData.php', { 
    some_value: $(some_input).val(), 
    other_value: $(other_input).val() 
}, function(data) { ... }); 

您还可以使用serialize通过所有形式的数据:

$.getJSON('http://localhost/getData.php', $(form_selector).serialize(), function(data) { ... }); 
+0

我如何从getData.php这是一个全PHP脚本访问它? – 2012-04-27 13:50:20

+0

@Peaceful_Warrior,数据将在$ _GET变量中可用。见http://php.net/manual/en/reserved.variables.get.php – 2012-04-27 16:33:57

+0

我无法得到这个工作。我做了这个'$ .getJSON('http://localhost/getData.php',$('#myform')。serialize(),function(data){...});'then this'

'然后,当我去getData.php&do这个'if(isset($ _ GET [“action”])){do stuff}'没有任何反应。我究竟做错了什么? – 2012-04-28 14:52:51

0

嗯。在这条线非常仔细一看:

<form id="myform" action="index.php" method="post" /> 

哎呀。您自行关闭了您的表单。这可能会导致输入/选择元素更新方式的问题。尝试将其更改为:

<form id="myform" action="index.php" method="post"> 

您还没有实际需要的选择元素的复杂选择。这也将让你选择的值:

$('#group_id').val() 
+0

谢谢,我已经采取了你们提供的所有建议,并且仍然无法使其起作用。我仍然在JS控制台中获得'GET http://localhost/getData.php?group_value = 0&updatedb_value = 1 '。 – 2012-05-02 14:02:28