【问题标题】:Multiple Ajax call with same JSON data key calling one php file具有相同 JSON 数据键的多个 Ajax 调用调用一个 php 文件
【发布时间】:2018-01-24 14:32:11
【问题描述】:

我正在尝试验证动态文本字段列表。 验证需要一个 AJAX 调用来与服务器交互。 在后端,我只编写了一个读取输入请求数据并执行操作的 php 文件。下面是例子。

abc.js

row_count = 6
for (i = 1; i <=row_count; i++) {
    id = "#val"+i.toString() ;
    $(id).change(function(){
        input_val="random";
        $.ajax({
            url:"url.php",
            type:post,   
            async:true,
            dataType: 'json',
            data : {temp:input_val},
            success:function(result){},
            error: function (request, status, error) {}
        });
    });
}           

url.php

<?php
$random_val = $_POST['temp'];
$cmd = 'systemcommand '.$random_val;
$flag = exec($cmd);
if ($flag == 0){
    echo json_encode(array("status"=>'Fail'));
}
else{
    echo json_encode(array("status"=>'Success'));
}
?>

当 row_count = 1(只有一个文本字段)时它可以正常工作,但当输入大于 1 时会失败。 当计数大于 1 时,php 脚本无法读取请求数据(JSON 数据中的键“temp”)。在这种情况下它是空白的。 任何线索或帮助都应该不胜感激。 谢谢

【问题讨论】:

  • 您不需要为每个相同的更改事件处理程序制作一整块 js 代码。只需将其附加到 .class 选择器而不是 #id 选择器。
  • 我不知道input_val 的真正价值是什么,但是由于您没有使用var 定义它,它可能是全局的,所以它可能不是您认为的那样循环结束后。这是您使用的确切代码吗?如果没有,你应该发布它。

标签: php ajax validation


【解决方案1】:

您的 javascript 位需要进行一些调整,因为您不需要为每个元素都定义一个 ajax。使用基于类的事件。此外,由于input 的行为与select 不同,您应该设置两个不同的事件类处理程序。

function validateAjax ( element ) {
    var input_val = element.val();// get the value of the element firing this off
    $.ajax({
        url: "url.php",
        type: 'post',   
        async: true,
        dataType: 'json',
        data : { temp: input_val },
        success: function(result) {
            // check your result.status here
        },
        error: function (request, status, error) { }
    });
}
$(".validate_change").on("change",function() { // for selects
    validateAjax( $(this) );
});
$(".validate_input").on("input",function() { // for text inputs
    validateAjax( $(this) );
});

为您的selectinput 添加相应的类。

<select class="validate_change" name="whatever"><options/></select>
<input class="validate_input" name="blah">

附言

我真的很担心你的这段代码:

$cmd = 'systemcommand '.$random_val;
$flag = exec($cmd);

所以,您只是在执行来自网页 POST var 的任何内容???请说这个网站将在受信任的高安全性访问下,只有使用它的人是受信任的经过身份验证的用户:-)

【讨论】:

  • 是的,只有经过身份验证的用户才能访问此页面。谢谢。它有效
猜你喜欢
  • 2014-10-18
  • 2019-01-15
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多