无法将该对象作为参数传递给javascript函数

时间:2019-04-08 14:24:21

标签: javascript html scope

我正在为网站建立用户注册。它使用AJAX发送数据。我创建了一个对象来存储用户数据,并通过函数将该对象发送到服务器。

sendUserData(passenger, "user_registration.php");

注意:

    在HTML文档中单击按钮即可调用
  • signupUser();
  • sendUserData()是用于发送用户详细信息的功能。
  • passenger是存储用户数据的对象。
  • sendUserData();在链接到HTML页面的单独脚本中。(全局范围)

这是我用来执行此操作的代码

//Sign Up A User

var signupUser = function () {

// User Object

var passenger = {       
 userName : document.getElementById("userFirstName").value,
 userEmail : document.getElementById("userEmail").value,
 country : document.getElementById("country").value,
 password : document.getElementById("userPassword").value,
 passwordVerify : document.getElementById("userPasswordVerify").value,
 passwordStatus : Boolean
};

// Verifies the password ("password" and "re-enter password")

verifyPassword(passenger.password,passenger.passwordVerify,passenger.passwordStatus);

if (passenger.passwordStatus == true) {

    sendUserData(passenger, "user_registration.php");
    console.log(passenger);
}

};

问题在于调用按钮上的功能signupUser(), 函数在verifyPassword();之后停止。

在Chrome调试工具中调用

sendUserData(passenger, "user_registration.php");时,出现错误“未在1:1:1定义乘客”

请帮助我找到答案。 谢谢。

编辑:

sendUserData();功能

这在链接到HTML页面的单独的javascript文件中。


function sendUserData (userDetails, destinationPage, functionToExecute) {


         var userDetailsJson = JSON.stringify(userDetails);
         var xhr = new XMLHttpRequest();
         xhr.onreadystatechange = function () {
          if(xhr.readyState == 4 && xhr.status == 200 ) {
           console.log(userDetailsJson);
           window.alert("Successfully Posted");
           console.log(xhr.responseText);

           if(functionToExecute) {

           functionToExecute();
           }

             }
         };

         xhr.open("POST", destinationPage, false);
         xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
         xhr.send("m=" +userDetailsJson);
     }

1 个答案:

答案 0 :(得分:0)

因此,这取决于theta1_interp = @(t) interp1(theta1t,theta1,t,'spline'); theta2_interp = @(t) interp1(theta2t,theta2,t,'spline'); f = @(t,y) [y(2)+theta1_interp(t)*y(1)*sin(y(2)); theta2_interp(t)*(y(2)^2)+y(1)-y(1)-y(1)-(1+a)*y(2)-k*(y(2)+(1+a)*y(1))]; 不能解决。

您将其初始化为passenger.passwordStatus == true,但它并没有按照您认为的那样做。

然后将参数传递给passwordStatus: Boolean函数,该函数看起来类似于:

verifyPassword

重新分配 function verifyPassword( password, retype, status) { // verify... status = true; } ,完全不影响外部范围内的status

因此,当需要检查状态时,您仍在比较passenger.passwordStatus,这是行不通的。

您可能想要更多类似的东西:

Boolean == true

根据需要让if( verifyPassword( passenger.password, passenger.passwordVerify)) { sendUserData(...); } 进行verifyPasswordreturn true;

并完全摆脱这种return false;的事情。