提交为空或提交的json解码失败.如何在表格内提交textarea [英] Submission empty or json decode of submission failed. how to submit textarea inside form

查看:64
本文介绍了提交为空或提交的json解码失败.如何在表格内提交textarea的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<p><h3>Enter your SQL query below:</h3>
<form method="post" action="http://212.47.247.139/challenge/ajax.php?submission=%7B%7D" id="my-form">
    <textarea id='text1' class='sql' name='submission' rows=10 cols=120></textarea>
    <input type="submit" id="blogSubmit" onclick="getText()">
    <br>
</form>
</p>
<script>
    function getText() {
        // var str=document.getElementById("text1").value;
        // alert(str + "i did it");

        $.ajax('ajax.php?submission=%7B%7D', {
                    data: {submission: $('#text1').val()},
                    success: function(data) {
                        success_callback(data);
                        console.log("success " + data);
                    },
                    error: function(xhr, status, error) {
                        alert(error);
                    },
                    type: 'POST'
                })
    }
</script>

我在包含一些sql语句的表单内有一个文本区域.我在表单内有一个提交按钮.我想发生的事情是:当用户单击提交"按钮时,文本区域内的任何内容都将发布到"http://212.47.247.139/challenge/ajax.php?submission=%7B%7D".使用ajax.

I have a text area inside a form that holds some sql statement. I have a submit button inside the form. What i want to have happen is: when the user clicks the submit button, whatever is inside the textarea gets POSTED to "http://212.47.247.139/challenge/ajax.php?submission=%7B%7D" using ajax.

提交后,当我在网络"选项卡下查看时,我看到表单数据具有我输入的内容,但是我收到提交空白或提交失败的json解码".我是ajax,html和javascript的新手.代替 $('#blogSubmit').val(),我尝试了很多事情,例如 JSON.stringify({prop:$('#blogSubmit').val()

After submitting, When I look under the network tab, i see the form data has what I enter in, but I get a "Submission empty or json decode of submission failed". I am new to ajax, html, and javascript. In place of the $('#blogSubmit').val(), I have tried many things such as JSON.stringify({ prop: $('#blogSubmit').val()

我做错了什么?

实施Barmer建议的更改后进行更新

UPDATE after implementing changes Barmer suggested

   <p><h3>Enter your SQL query below:</h3>
    <form method="post" action="http://212.47.247.139/challenge/ajax.php?submission=%7B%7D" id="my-form">
        <textarea id='text1' class='sql' name='submission' rows=10 cols=120></textarea>
        <input type="button" id="blogSubmit" onclick="getText()">
        <br>
    </form>
    </p>
    <script>
        function getText() {
            // var str=document.getElementById("text1").value;
            // alert(str + "i did it");
    
            $.ajax('ajax.php?submission=%7B%7D', {
                        data: {submission: { prop: JSON.stringify($("#text1").val())}},
                        success: function(data) {
                            success_callback(data);
                            console.log("success " + data);
                        },
                        error: function(xhr, status, error) {
                            alert(error);
                        },
                        type: 'POST'
                    })
        }
</script>

现在我得到此错误:"警告:json_decode()期望参数1为字符串,在/var/www/my_website/challenge/ajax.php中给出的数组 31
行提交为空或提交的json解码失败"

Now I get this error: "Warning: json_decode() expects parameter 1 to be string, array given in /var/www/my_website/challenge/ajax.php on line 31
Submission empty or json decode of submission failed"

为什么当我执行JSON.stringify将其转换为字符串时会给出一个数组?

Why would it say an array is given when I am doing JSON.stringify to convert it to string?

推荐答案

将提交"按钮更改为 type ="button" ,因此它不提交表单,仅运行您的函数.

Change the submit button to type="button" so it doesn't submit the form, it just runs your function.

在AJAX调用中,使用 JSON.stringify()将textarea的值转换为JSON.

In the AJAX call, convert the value of the textarea to JSON with JSON.stringify().

function getText() {

  $.ajax('ajax.php?submission=%7B%7D', {
    data: {
      submission: JSON.stringify($('#text1').val())
    },
    success: function(data) {
      success_callback(data);
      console.log("success " + data);
    },
    error: function(xhr, status, error) {
      alert(error);
    },
    type: 'POST'
  })
}

<p>
  <h3>Enter your SQL query below:</h3>
  <form method="post" action="http://212.47.247.139/challenge/ajax.php?submission=%7B%7D" id="my-form">
    <textarea id='text1' class='sql' name='submission' rows=10 cols=120></textarea>
    <input type="button" id="blogSubmit" onclick="getText()">
    <br>
  </form>
</p>

这篇关于提交为空或提交的json解码失败.如何在表格内提交textarea的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆