2013-12-17 45 views
1

我有一个HTML页面托管在我的本地服务器apache2,我想发送一些数据到Python脚本并操纵它,我使用的时候我使用动作标签的窗体,它不会导航到下一页,当我尝试使用Jquery时,脚本不会被执行。任何帮助?提前致谢。POST数据到Python脚本

HTML:

<body> 
    <div id="Header"></div> 
    <div id="wrapper"> 
    <form name="login-form" class="login-form" action="/cgi-bin/test.py" method="post" onsubmit="validate();return false;"> 
     <div class="header"> 
     <h1>Enter Your Credentials</h1> 
     <span>URL,Admin,Tenant,Password</span> 
     </div> 
     <div class="content"> 
     <input id="Uname" name="url" type="text" class="input username" placeholder="Keystone URL" /> 
     <div class="user-icon"></div> 
     <input id="Pname"name="admin" type="password" class="input password" placeholder="Admin" /> 
     <div class="pass-icon"></div> 
     <input id="oPass"name="password" type="password" class="input password" placeholder="Password" /> 
     <div class="pass-icon"></div> 
     <input id="tenant"name="tenant" type="password" class="input password" placeholder="Tenant" /> 
     <div class="pass-icon"></div> 
     </div> 
     <div class="footer"> 
     <input type="submit" name="submit" value="Submit" class="button"/> 
     </div> 
    </form> 
    </div> 
</body> 

这样的脚本被完全执行,但不导航到下一个页面。

JavaScript函数:

function validate() { 
    var un = document.getElementById("Uname").value; 
    var valid = false; 

    var unArray = ["http://192.168.1.102:5000/v2.0"]; 
    for (var i = 0; i < unArray.length; i++) { 
     if ((un == unArray[i])) { 
      valid = true; 
      break; 
     } 
    } 

    if (valid) { 
     alert("Login was successful"); 
     location.href = 'HomePage.html'; 
     document.login-form.action='/cgi-bin/test.py'; 

     return false; 
    } else { 
     alert("Login was Unsuccessful"); 
     return false; 
    } 
} 

这是Ajax调用,我试着让:

$.ajax({ 
    type: "POST", 
    url: "/cgi-bin/test.py", 
    data: "stuff_for_python="+document.getElementById("Uname").value, 
    success: function(response) {  
     alert(response);  
    }, 
    error: function(data) { 
     alert(data.responseText); 
    } 
}); 

的Python脚本:

#!/usr/bin/python 
import cgi, cgitb 
from StringIO import StringIO 
import json 
from io import BytesIO 
import pycurl 

cgitb.enable() 
# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields 
url = form.getvalue('stuff_for_python') 

print "Content-type: text/html\r\n\r\n\n" 
print 

print url 
f = open('/home/stack/writing.txt','wb') 
f.write(url) 
f.close() 
+0

你的'data:'格式错误。它需要以json格式,即“{”key“:”value“}'' – NuclearPeon

回答

1

的问题是通过传递的数据值帖子。
试试这个:

$.ajax(
{ 
    type: "POST", 
    url: "/cgi-bin/test.py" , 
    data: {stuff_for_python: document.getElementById("Uname").value}, 
    success: function(response) 
    { 
     alert(response); 
    }, 
    error: function(data) 
    { 
     alert(data.responseText); 
    }, 
}); 
+0

我似乎无法立即在文件中写入响应或将它打印到任何地方。 – mobykhn