Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要通过json格式的javascript向服务器发送数据_Javascript_Php_Ajax_Json - Fatal编程技术网

需要通过json格式的javascript向服务器发送数据

需要通过json格式的javascript向服务器发送数据,javascript,php,ajax,json,Javascript,Php,Ajax,Json,我无法将数据从表单发布到服务器,但必须是json格式并使用ajax。如何在使用javascript时做到这一点&不能使用Jquery这里是我的问题… <form id="contactus" action="http://wirehoer.net" method="post"> <fieldset> <!-- Contact Name --> <label for="name">Name:</label>

我无法将数据从表单发布到服务器,但必须是json格式并使用ajax。如何在使用javascript时做到这一点&不能使用Jquery这里是我的问题…

<form id="contactus" action="http://wirehoer.net" method="post">
<fieldset>
    <!-- Contact Name
     -->
    <label for="name">Name:</label>
    <input name="name" id="name" type="text" pattern="\b[-'a-zA-Z]+,?\s[-'a-zA-Z]{0,19}\b" autofocus required>
    <span id="name-error" class="error">Please enter first & last name</span>
    <!-- Email 
    -->
    <label for="email">Email:</label>
    <input name="email" id="email" type="email" pattern="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" required>
    <span id="email-error" class="error">Please enter email address</span>
    <!-- Phone 
    -->
    <label for="phone">Phone:</label>
    <input name="phone" id="phone" type="tel" pattern="\d{10}" required>
    <span id="phone-error" class="error">Phone number must only contain numbers</span>
    <!-- Status - Client | Partner | Vendor 
    -->
    <label for="status">Status:         
        <select name="status" id="status">
            <option value="client">Client</option>
            <option value="partner">Partner</option>
            <option value="vendor">Vendor</option>
        </select>
    </label>
    <!-- Subscribe 
    -->
    <label for="subscribe">
    <input name="newsletter" id="subscribe" type="checkbox" value="on" checked>
        Send me your newsletter</label>
    <!-- Support - Sales | Support 
    -->
    <label class="needs" for="select_sales">
        <input id="select_sales" name="slsSelect" type="radio" value="sales" checked>Sales
    </label>
    <label class="needs" for="select_support">      
        <input id="select_support" name="slsSelect" type="radio" value="support">Support
    </label>
    <!-- Description 
    -->
    <label for="details">Message:</label>
    <textarea name="message" id="details" rows="10" cols="30"></textarea>
    <span id="details-error" class="error">Please describe what your request is</span>
</fieldset>

<fieldset>
    <button id= "send" type="submit">Send</button>
    <button type="reset">Reset</button>
</fieldset>
</form>
<!-- javascript validation 
-->
<script type="text/javascript" src="contactform_Lab11.js"></script>

</body>
</html> 
还要提前感谢

<form id="contactus" action="http://wirehoer.net" method="post">
<fieldset>
    <!-- Contact Name
     -->
    <label for="name">Name:</label>
    <input name="name" id="name" type="text" pattern="\b[-'a-zA-Z]+,?\s[-'a-zA-Z]{0,19}\b" autofocus required>
    <span id="name-error" class="error">Please enter first & last name</span>
    <!-- Email 
    -->
    <label for="email">Email:</label>
    <input name="email" id="email" type="email" pattern="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" required>
    <span id="email-error" class="error">Please enter email address</span>
    <!-- Phone 
    -->
    <label for="phone">Phone:</label>
    <input name="phone" id="phone" type="tel" pattern="\d{10}" required>
    <span id="phone-error" class="error">Phone number must only contain numbers</span>
    <!-- Status - Client | Partner | Vendor 
    -->
    <label for="status">Status:         
        <select name="status" id="status">
            <option value="client">Client</option>
            <option value="partner">Partner</option>
            <option value="vendor">Vendor</option>
        </select>
    </label>
    <!-- Subscribe 
    -->
    <label for="subscribe">
    <input name="newsletter" id="subscribe" type="checkbox" value="on" checked>
        Send me your newsletter</label>
    <!-- Support - Sales | Support 
    -->
    <label class="needs" for="select_sales">
        <input id="select_sales" name="slsSelect" type="radio" value="sales" checked>Sales
    </label>
    <label class="needs" for="select_support">      
        <input id="select_support" name="slsSelect" type="radio" value="support">Support
    </label>
    <!-- Description 
    -->
    <label for="details">Message:</label>
    <textarea name="message" id="details" rows="10" cols="30"></textarea>
    <span id="details-error" class="error">Please describe what your request is</span>
</fieldset>

<fieldset>
    <button id= "send" type="submit">Send</button>
    <button type="reset">Reset</button>
</fieldset>
</form>
<!-- javascript validation 
-->
<script type="text/javascript" src="contactform_Lab11.js"></script>

</body>
</html> 
  • 如何通过处理HTTP 200并使用ajax将其转换并发送到服务器

  • <form id="contactus" action="http://wirehoer.net" method="post">
    <fieldset>
        <!-- Contact Name
         -->
        <label for="name">Name:</label>
        <input name="name" id="name" type="text" pattern="\b[-'a-zA-Z]+,?\s[-'a-zA-Z]{0,19}\b" autofocus required>
        <span id="name-error" class="error">Please enter first & last name</span>
        <!-- Email 
        -->
        <label for="email">Email:</label>
        <input name="email" id="email" type="email" pattern="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" required>
        <span id="email-error" class="error">Please enter email address</span>
        <!-- Phone 
        -->
        <label for="phone">Phone:</label>
        <input name="phone" id="phone" type="tel" pattern="\d{10}" required>
        <span id="phone-error" class="error">Phone number must only contain numbers</span>
        <!-- Status - Client | Partner | Vendor 
        -->
        <label for="status">Status:         
            <select name="status" id="status">
                <option value="client">Client</option>
                <option value="partner">Partner</option>
                <option value="vendor">Vendor</option>
            </select>
        </label>
        <!-- Subscribe 
        -->
        <label for="subscribe">
        <input name="newsletter" id="subscribe" type="checkbox" value="on" checked>
            Send me your newsletter</label>
        <!-- Support - Sales | Support 
        -->
        <label class="needs" for="select_sales">
            <input id="select_sales" name="slsSelect" type="radio" value="sales" checked>Sales
        </label>
        <label class="needs" for="select_support">      
            <input id="select_support" name="slsSelect" type="radio" value="support">Support
        </label>
        <!-- Description 
        -->
        <label for="details">Message:</label>
        <textarea name="message" id="details" rows="10" cols="30"></textarea>
        <span id="details-error" class="error">Please describe what your request is</span>
    </fieldset>
    
    <fieldset>
        <button id= "send" type="submit">Send</button>
        <button type="reset">Reset</button>
    </fieldset>
    </form>
    <!-- javascript validation 
    -->
    <script type="text/javascript" src="contactform_Lab11.js"></script>
    
    </body>
    </html> 
    
  • 返回JSON时 对象的状态编码如下:{“status”:“---”},其中“---”是“success”或“error”

  • <form id="contactus" action="http://wirehoer.net" method="post">
    <fieldset>
        <!-- Contact Name
         -->
        <label for="name">Name:</label>
        <input name="name" id="name" type="text" pattern="\b[-'a-zA-Z]+,?\s[-'a-zA-Z]{0,19}\b" autofocus required>
        <span id="name-error" class="error">Please enter first & last name</span>
        <!-- Email 
        -->
        <label for="email">Email:</label>
        <input name="email" id="email" type="email" pattern="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" required>
        <span id="email-error" class="error">Please enter email address</span>
        <!-- Phone 
        -->
        <label for="phone">Phone:</label>
        <input name="phone" id="phone" type="tel" pattern="\d{10}" required>
        <span id="phone-error" class="error">Phone number must only contain numbers</span>
        <!-- Status - Client | Partner | Vendor 
        -->
        <label for="status">Status:         
            <select name="status" id="status">
                <option value="client">Client</option>
                <option value="partner">Partner</option>
                <option value="vendor">Vendor</option>
            </select>
        </label>
        <!-- Subscribe 
        -->
        <label for="subscribe">
        <input name="newsletter" id="subscribe" type="checkbox" value="on" checked>
            Send me your newsletter</label>
        <!-- Support - Sales | Support 
        -->
        <label class="needs" for="select_sales">
            <input id="select_sales" name="slsSelect" type="radio" value="sales" checked>Sales
        </label>
        <label class="needs" for="select_support">      
            <input id="select_support" name="slsSelect" type="radio" value="support">Support
        </label>
        <!-- Description 
        -->
        <label for="details">Message:</label>
        <textarea name="message" id="details" rows="10" cols="30"></textarea>
        <span id="details-error" class="error">Please describe what your request is</span>
    </fieldset>
    
    <fieldset>
        <button id= "send" type="submit">Send</button>
        <button type="reset">Reset</button>
    </fieldset>
    </form>
    <!-- javascript validation 
    -->
    <script type="text/javascript" src="contactform_Lab11.js"></script>
    
    </body>
    </html> 
    
  • 如果响应状态为“成功”,则应显示一条感谢消息 显示
  • 如果响应状态为“错误”,则页面应显示“常规” “请求无法完成”等警告

    <form id="contactus" action="http://wirehoer.net" method="post">
    <fieldset>
        <!-- Contact Name
         -->
        <label for="name">Name:</label>
        <input name="name" id="name" type="text" pattern="\b[-'a-zA-Z]+,?\s[-'a-zA-Z]{0,19}\b" autofocus required>
        <span id="name-error" class="error">Please enter first & last name</span>
        <!-- Email 
        -->
        <label for="email">Email:</label>
        <input name="email" id="email" type="email" pattern="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" required>
        <span id="email-error" class="error">Please enter email address</span>
        <!-- Phone 
        -->
        <label for="phone">Phone:</label>
        <input name="phone" id="phone" type="tel" pattern="\d{10}" required>
        <span id="phone-error" class="error">Phone number must only contain numbers</span>
        <!-- Status - Client | Partner | Vendor 
        -->
        <label for="status">Status:         
            <select name="status" id="status">
                <option value="client">Client</option>
                <option value="partner">Partner</option>
                <option value="vendor">Vendor</option>
            </select>
        </label>
        <!-- Subscribe 
        -->
        <label for="subscribe">
        <input name="newsletter" id="subscribe" type="checkbox" value="on" checked>
            Send me your newsletter</label>
        <!-- Support - Sales | Support 
        -->
        <label class="needs" for="select_sales">
            <input id="select_sales" name="slsSelect" type="radio" value="sales" checked>Sales
        </label>
        <label class="needs" for="select_support">      
            <input id="select_support" name="slsSelect" type="radio" value="support">Support
        </label>
        <!-- Description 
        -->
        <label for="details">Message:</label>
        <textarea name="message" id="details" rows="10" cols="30"></textarea>
        <span id="details-error" class="error">Please describe what your request is</span>
    </fieldset>
    
    <fieldset>
        <button id= "send" type="submit">Send</button>
        <button type="reset">Reset</button>
    </fieldset>
    </form>
    <!-- javascript validation 
    -->
    <script type="text/javascript" src="contactform_Lab11.js"></script>
    
    </body>
    </html> 
    
    HTML

    <form id="contactus" action="http://wirehoer.net" method="post">
    <fieldset>
        <!-- Contact Name
         -->
        <label for="name">Name:</label>
        <input name="name" id="name" type="text" pattern="\b[-'a-zA-Z]+,?\s[-'a-zA-Z]{0,19}\b" autofocus required>
        <span id="name-error" class="error">Please enter first & last name</span>
        <!-- Email 
        -->
        <label for="email">Email:</label>
        <input name="email" id="email" type="email" pattern="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" required>
        <span id="email-error" class="error">Please enter email address</span>
        <!-- Phone 
        -->
        <label for="phone">Phone:</label>
        <input name="phone" id="phone" type="tel" pattern="\d{10}" required>
        <span id="phone-error" class="error">Phone number must only contain numbers</span>
        <!-- Status - Client | Partner | Vendor 
        -->
        <label for="status">Status:         
            <select name="status" id="status">
                <option value="client">Client</option>
                <option value="partner">Partner</option>
                <option value="vendor">Vendor</option>
            </select>
        </label>
        <!-- Subscribe 
        -->
        <label for="subscribe">
        <input name="newsletter" id="subscribe" type="checkbox" value="on" checked>
            Send me your newsletter</label>
        <!-- Support - Sales | Support 
        -->
        <label class="needs" for="select_sales">
            <input id="select_sales" name="slsSelect" type="radio" value="sales" checked>Sales
        </label>
        <label class="needs" for="select_support">      
            <input id="select_support" name="slsSelect" type="radio" value="support">Support
        </label>
        <!-- Description 
        -->
        <label for="details">Message:</label>
        <textarea name="message" id="details" rows="10" cols="30"></textarea>
        <span id="details-error" class="error">Please describe what your request is</span>
    </fieldset>
    
    <fieldset>
        <button id= "send" type="submit">Send</button>
        <button type="reset">Reset</button>
    </fieldset>
    </form>
    <!-- javascript validation 
    -->
    <script type="text/javascript" src="contactform_Lab11.js"></script>
    
    </body>
    </html> 
    
    联系我

    <form id="contactus" action="http://wirehoer.net" method="post">
    <fieldset>
        <!-- Contact Name
         -->
        <label for="name">Name:</label>
        <input name="name" id="name" type="text" pattern="\b[-'a-zA-Z]+,?\s[-'a-zA-Z]{0,19}\b" autofocus required>
        <span id="name-error" class="error">Please enter first & last name</span>
        <!-- Email 
        -->
        <label for="email">Email:</label>
        <input name="email" id="email" type="email" pattern="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" required>
        <span id="email-error" class="error">Please enter email address</span>
        <!-- Phone 
        -->
        <label for="phone">Phone:</label>
        <input name="phone" id="phone" type="tel" pattern="\d{10}" required>
        <span id="phone-error" class="error">Phone number must only contain numbers</span>
        <!-- Status - Client | Partner | Vendor 
        -->
        <label for="status">Status:         
            <select name="status" id="status">
                <option value="client">Client</option>
                <option value="partner">Partner</option>
                <option value="vendor">Vendor</option>
            </select>
        </label>
        <!-- Subscribe 
        -->
        <label for="subscribe">
        <input name="newsletter" id="subscribe" type="checkbox" value="on" checked>
            Send me your newsletter</label>
        <!-- Support - Sales | Support 
        -->
        <label class="needs" for="select_sales">
            <input id="select_sales" name="slsSelect" type="radio" value="sales" checked>Sales
        </label>
        <label class="needs" for="select_support">      
            <input id="select_support" name="slsSelect" type="radio" value="support">Support
        </label>
        <!-- Description 
        -->
        <label for="details">Message:</label>
        <textarea name="message" id="details" rows="10" cols="30"></textarea>
        <span id="details-error" class="error">Please describe what your request is</span>
    </fieldset>
    
    <fieldset>
        <button id= "send" type="submit">Send</button>
        <button type="reset">Reset</button>
    </fieldset>
    </form>
    <!-- javascript validation 
    -->
    <script type="text/javascript" src="contactform_Lab11.js"></script>
    
    </body>
    </html> 
    
    
    姓名:
    请输入名字和姓氏
    电邮:
    请输入电子邮件地址
    电话:
    电话号码必须仅包含号码
    地位:
    客户
    搭档
    小贩
    把你的通讯寄给我
    销售额
    支持
    信息:
    请描述一下你的要求
    发送
    重置
    
Javascript

<form id="contactus" action="http://wirehoer.net" method="post">
<fieldset>
    <!-- Contact Name
     -->
    <label for="name">Name:</label>
    <input name="name" id="name" type="text" pattern="\b[-'a-zA-Z]+,?\s[-'a-zA-Z]{0,19}\b" autofocus required>
    <span id="name-error" class="error">Please enter first & last name</span>
    <!-- Email 
    -->
    <label for="email">Email:</label>
    <input name="email" id="email" type="email" pattern="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" required>
    <span id="email-error" class="error">Please enter email address</span>
    <!-- Phone 
    -->
    <label for="phone">Phone:</label>
    <input name="phone" id="phone" type="tel" pattern="\d{10}" required>
    <span id="phone-error" class="error">Phone number must only contain numbers</span>
    <!-- Status - Client | Partner | Vendor 
    -->
    <label for="status">Status:         
        <select name="status" id="status">
            <option value="client">Client</option>
            <option value="partner">Partner</option>
            <option value="vendor">Vendor</option>
        </select>
    </label>
    <!-- Subscribe 
    -->
    <label for="subscribe">
    <input name="newsletter" id="subscribe" type="checkbox" value="on" checked>
        Send me your newsletter</label>
    <!-- Support - Sales | Support 
    -->
    <label class="needs" for="select_sales">
        <input id="select_sales" name="slsSelect" type="radio" value="sales" checked>Sales
    </label>
    <label class="needs" for="select_support">      
        <input id="select_support" name="slsSelect" type="radio" value="support">Support
    </label>
    <!-- Description 
    -->
    <label for="details">Message:</label>
    <textarea name="message" id="details" rows="10" cols="30"></textarea>
    <span id="details-error" class="error">Please describe what your request is</span>
</fieldset>

<fieldset>
    <button id= "send" type="submit">Send</button>
    <button type="reset">Reset</button>
</fieldset>
</form>
<!-- javascript validation 
-->
<script type="text/javascript" src="contactform_Lab11.js"></script>

</body>
</html> 
> //This will get the data of the fields
> document.getElementById('send').onclick=function(evt) {
> 
> var errors = false; //Gets all the inputs from contact form var
> myNodeList = document.querySelectorAll('input, textarea, select');
> 
> //Declar the vars //var i, val; // empty Array
> 
> //Start of loop  for (i = 0; i < myNodeList.length; i++) {
>     // Get element
>     val = myNodeList[i];
> 
>     //Get pattern attribute of regEx
>     regEx = new RegExp(val.getAttribute("pattern"));
> 
>     //Get Error message
>     err = document.getElementById(val.id+"-error")
> 
>     //By default, set the class to error, which hides the error message
>             err.className="error";
> 
>     //Test value "val" again the regEx
>     if(!regEx.test(val.value)){
>         //input fails and does not pass regEx test, set .display class
>         err.className+=" display";
> 
>         errors = true;
>     } } evt.preventDefault(); if(errors ===false){
>     document.getElementById("contactus").submit(); } };
//这将获取字段的数据
>document.getElementById('send').onclick=function(evt){
> 
>var errors=false;//从联系人表单var获取所有输入
>myNodeList=document.querySelectorAll('input,textarea,select');
> 
>//删除变量//变量i,val;//空数组
> 
>//的循环开始(i=0;i//获取元素
>val=myNodeList[i];
> 
>//获取正则表达式的模式属性
>regEx=newregexp(val.getAttribute(“模式”);
> 
>//获取错误消息
>err=document.getElementById(val.id+“-error”)
> 
>//默认情况下,将类设置为error,这将隐藏错误消息
>err.className=“error”;
> 
>//再次在正则表达式中测试值“val”
>如果(!正则表达式测试(val.value)){
>//输入失败,未通过regEx测试,set.display类
>错误.className+=“显示”;
> 
>错误=正确;
>}evt.preventDefault();如果(错误===false){
>document.getElementById(“contactus”).submit();};

您需要在对象中设置所需的所有数据,并在AJAX请求中将其作为JSON字符串发送

<form id="contactus" action="http://wirehoer.net" method="post">
<fieldset>
    <!-- Contact Name
     -->
    <label for="name">Name:</label>
    <input name="name" id="name" type="text" pattern="\b[-'a-zA-Z]+,?\s[-'a-zA-Z]{0,19}\b" autofocus required>
    <span id="name-error" class="error">Please enter first & last name</span>
    <!-- Email 
    -->
    <label for="email">Email:</label>
    <input name="email" id="email" type="email" pattern="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" required>
    <span id="email-error" class="error">Please enter email address</span>
    <!-- Phone 
    -->
    <label for="phone">Phone:</label>
    <input name="phone" id="phone" type="tel" pattern="\d{10}" required>
    <span id="phone-error" class="error">Phone number must only contain numbers</span>
    <!-- Status - Client | Partner | Vendor 
    -->
    <label for="status">Status:         
        <select name="status" id="status">
            <option value="client">Client</option>
            <option value="partner">Partner</option>
            <option value="vendor">Vendor</option>
        </select>
    </label>
    <!-- Subscribe 
    -->
    <label for="subscribe">
    <input name="newsletter" id="subscribe" type="checkbox" value="on" checked>
        Send me your newsletter</label>
    <!-- Support - Sales | Support 
    -->
    <label class="needs" for="select_sales">
        <input id="select_sales" name="slsSelect" type="radio" value="sales" checked>Sales
    </label>
    <label class="needs" for="select_support">      
        <input id="select_support" name="slsSelect" type="radio" value="support">Support
    </label>
    <!-- Description 
    -->
    <label for="details">Message:</label>
    <textarea name="message" id="details" rows="10" cols="30"></textarea>
    <span id="details-error" class="error">Please describe what your request is</span>
</fieldset>

<fieldset>
    <button id= "send" type="submit">Send</button>
    <button type="reset">Reset</button>
</fieldset>
</form>
<!-- javascript validation 
-->
<script type="text/javascript" src="contactform_Lab11.js"></script>

</body>
</html> 
  document.getElementById('send').onclick = function (evt) {

        var errors = false; //Gets all the inputs from contact form var
        myNodeList = document.querySelectorAll('input, textarea, select');
        var data = {};
        //Declar the vars //var i, val; // empty Array

        //Start of loop  
        for (i = 0; i < myNodeList.length; i++) {
            // Get element
            val = myNodeList[i].value;
            data[myNodeList[i].id] = val;
            //Get pattern attribute of regEx
            regEx = new RegExp(val.getAttribute("pattern"));

            //Get Error message
            err = document.getElementById(val.id + "-error")

            //By default, set the class to error, which hides the error message
            err.className = "error";

            //Test value "val" again the regEx
            if (!regEx.test(val.value)) {
                //input fails and does not pass regEx test, set .display class
                err.className += " display";

                errors = true;
            }
        }

        evt.preventDefault();
        if (errors === false) {
            var req = new XMLHttpRequest();

            req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            req.open('POST', 'http://wirehopper.net/ajax-submit.php');
            req.onload = function () {
                if(req.status == 200)
                    alert(req.response);
            }
            //TODO: implement error handling
            req.send(JSON.stringify(data));

        };
    }
document.getElementById('send').onclick=function(evt){
var errors=false;//从联系人表单var获取所有输入
myNodeList=document.querySelectorAll('input,textarea,select');
变量数据={};
//Declar变量//变量i,val;//空数组
//循环起点
对于(i=0;i
您基本上只是列出了您的项目需求,而不是问了一个特定的、基于代码的问题。我建议将您的问题缩减为一个特定的问题,只包括与该问题相关的代码。如果需要,您可以随时提出多个问题@Carlouuusys,ajax调用使用XMLHttpRequest对象
var req=new XMLHttpRequest()这是如何发挥作用的req.setRequestHeader@CarlouuusWhile@Carlouuus完美地回答了这个问题,如果您不是XMLHttpRequest的粉丝(坦率地说,谁是……我的意思是,看看这个camelcasting),那么我建议您看看一些微框架来帮助您。刚刚发现这一点,它显示了某些框架是多么流行。对于AJAX来说看起来真的很好。如果您要做的不仅仅是一点AJAX,那么可能需要做一些更实质的事情,例如。