2012-07-31 73 views
3

我對HTML5開發非常非常新,這個問題可能非常愚蠢,但我找到了一個答案(或者我已經搜索得非常好)。發送html表單通過發佈到webservice

我想通過郵件發送表單到Web服務(我不想顯示URL中的所有字段)。

我有兩個問題:

  1. 我該怎麼命名的形式領域?如果我試圖發送userName,我認爲我必須將此測試作爲ID放置到保存該值的字段中。
  2. 這是因爲我好奇。哪些是發送到Web服務的郵件內容?

這是我發現互聯網搜索的例子:我想我會需要這些ID,而在Web服務處理他們獲取這些值

<FORM action="http://somesite.com/prog/adduser" method="post"> 
    <P> 
    <LABEL for="firstname">First name: </LABEL> 
       <INPUT type="text" id="firstname"><BR> 
    <LABEL for="lastname">Last name: </LABEL> 
       <INPUT type="text" id="lastname"><BR> 
    <LABEL for="email">email: </LABEL> 
       <INPUT type="text" id="email"><BR> 
    <INPUT type="radio" name="sex" value="Male"> Male<BR> 
    <INPUT type="radio" name="sex" value="Female"> Female<BR> 
    <INPUT type="submit" value="Send"> <INPUT type="reset"> 
    </P> 
</FORM 

,不是嗎?

+0

好了,這一切都依賴於Web服務。 如果它是[REST API] [1],那麼您可以將其發佈到它。 [1]:http://en.wikipedia.org/wiki/Representational_state_transfer – netigger 2012-07-31 09:22:39

+0

對不起,我不明白你:我該如何命名錶單域? – VansFannel 2012-07-31 09:24:01

+0

這取決於web服務和web服務的規範。你想要連接什麼web服務? – netigger 2012-07-31 09:25:10

回答

2

這取決於,你可以做一個張貼到頁面的重定向(在.NET中,你會這樣處理):

<form action="http://myurl/postpage.ashx" method="post"> 
    <input name="forename" /> 
    <input name="surname" /> 
    <input type="submit" value="Submit" /> 
</form> 

再挑這個了在服務器端腳本在使用postpage.ashx

string forename = Request["forename"]; 
string surname = Request["surname"]; 

你也可以使用jQuery作出AJAX調用到S使用以下AME頁:

var forename = $("input[name=\"forename\"]").val(); 
var surname = $("input[name=\"surname\"]").val(); 

$.ajax({ 
    url: "http://myurl/postpage.ashx", 
    type: "POST", 
    async: true, // set to false if you don't mind the page pausing while waiting for response 
    cache: false, 
    dataType: "json", 
    data: "{ 'forename': '" + forename + "', 'surname': '" + surname + "' }", 
    contentType: "application/json; charset=utf-8", 
    success: function(data) { 
     // handle your successful response here 
    }, 
    error: function(xhr, ajaxOptions, thrownError) { 
     // handle your fail response here 
    } 
}); 

您將處理在服務器端代碼相同的方式郵寄。這裏要注意的關鍵是,無論您輸入的名稱是名稱您輸入元素的屬性是什麼將作爲鍵/值對發送到您的接收URL。

+0

你可以給一個exmaple如何檢索鍵/值對在(ASP.NET)webmethod?我有它: [WebMethod(Description =「測試方法。」)] public void TestMethod(String APP_VERSION_CODE) { // APP_VERSION_CODE應該是值還是...?我不知道.. } 但我不斷收到ReportSenderException – Zuop 2015-06-26 14:56:38

0

每個web服務都應該給你類似WSDL的東西,它通常包含你可以使用的可用字段和方法的規範。如果您正在連接的web服務的URL爲webservice.com,則嘗試使用webservice.com/wsdl以獲得WSDL

檢查這個話題:click

+0

我在問我該如何發送這些字段。我想我必須在形式上設置一些東西來識別它們。順便說一下,Web服務尚未實現。 – VansFannel 2012-07-31 09:22:03

+0

請看這裏:http://stackoverflow.com/questions/8753098/how-get-html-post-data-and-pass-to-a-webservice – mnmnc 2012-07-31 09:24:57

0

屬性「name」是爲了將該參數傳遞給Servlet(或任何地方)而需要唯一的屬性。 post方法然後加密消息並將其發送給Servlet。

<form method="post" action = "LoginServlet"> 
    Name: <input type="text" name="userName"> 
    Password: <input type="password" name="password"> 

    <input type="submit" name = "Login" class="button"> 
</form> 

爲了訪問這些數據,你會做這樣的事情在Servlet:

String userName = request.getParameter("userName");